Update GLSL Tint test expectations.

Change-Id: Iaaa32a90c14254639a620380dc6b72b579216c69
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/148680
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/test/tint/benchmark/particles.wgsl.expected.glsl b/test/tint/benchmark/particles.wgsl.expected.glsl
index a869683..e7a9ac3 100644
--- a/test/tint/benchmark/particles.wgsl.expected.glsl
+++ b/test/tint/benchmark/particles.wgsl.expected.glsl
@@ -49,7 +49,7 @@
 
 VertexOutput vs_main(VertexInput tint_symbol) {
   vec3 quad_pos = (mat2x3(render_params.inner.right, render_params.inner.up) * tint_symbol.quad_pos);
-  vec3 position = (tint_symbol.position + (quad_pos * 0.01f));
+  vec3 position = (tint_symbol.position + (quad_pos * 0.00999999977648258209f));
   VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec2(0.0f, 0.0f));
   tint_symbol_1.position = (render_params.inner.modelViewProjectionMatrix * vec4(position, 1.0f));
   tint_symbol_1.color = tint_symbol.color;
@@ -69,7 +69,7 @@
   return;
 }
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(location = 0) in vec4 color_1;
 layout(location = 1) in vec2 quad_pos_1;
@@ -124,8 +124,8 @@
 
 vec2 rand_seed = vec2(0.0f, 0.0f);
 float rand() {
-  rand_seed.x = fract((cos(dot(rand_seed, vec2(23.140779495f, 232.616897583f))) * 136.816802979f));
-  rand_seed.y = fract((cos(dot(rand_seed, vec2(54.478565216f, 345.841522217f))) * 534.764526367f));
+  rand_seed.x = fract((cos(dot(rand_seed, vec2(23.1407794952392578125f, 232.6168975830078125f))) * 136.816802978515625f));
+  rand_seed.y = fract((cos(dot(rand_seed, vec2(54.478565216064453125f, 345.841522216796875f))) * 534.7645263671875f));
   return rand_seed.y;
 }
 
@@ -208,11 +208,11 @@
     particle.position = vec3((((uv - 0.5f) * 3.0f) * vec2(1.0f, -1.0f)), 0.0f);
     particle.color = texelFetch(tint_symbol_2_1, ivec2(coord), 0);
     float tint_symbol = rand();
-    particle.velocity.x = ((tint_symbol - 0.5f) * 0.100000001f);
+    particle.velocity.x = ((tint_symbol - 0.5f) * 0.10000000149011611938f);
     float tint_symbol_1 = rand();
-    particle.velocity.y = ((tint_symbol_1 - 0.5f) * 0.100000001f);
+    particle.velocity.y = ((tint_symbol_1 - 0.5f) * 0.10000000149011611938f);
     float tint_symbol_3 = rand();
-    particle.velocity.z = (tint_symbol_3 * 0.300000012f);
+    particle.velocity.z = (tint_symbol_3 * 0.30000001192092895508f);
     float tint_symbol_4 = rand();
     particle.lifetime = (0.5f + (tint_symbol_4 * 2.0f));
   }
@@ -356,7 +356,7 @@
     float d = buf_in.weights[((src_offset + 1u) + ubo.inner.width)];
     float sum = dot(vec4(a, b, c, d), vec4(1.0f));
     buf_out.weights[dst_offset] = (sum / 4.0f);
-    vec4 probabilities = (vec4(a, (a + b), ((a + b) + c), sum) / max(sum, 0.0001f));
+    vec4 probabilities = (vec4(a, (a + b), ((a + b) + c), sum) / max(sum, 0.00009999999747378752f));
     imageStore(tex_out, ivec2(coord.xy), probabilities);
   }
 }
diff --git a/test/tint/bug/tint/749.spvasm.expected.glsl b/test/tint/bug/tint/749.spvasm.expected.glsl
index 2c170a6..b2f6595 100644
--- a/test/tint/bug/tint/749.spvasm.expected.glsl
+++ b/test/tint/bug/tint/749.spvasm.expected.glsl
@@ -1,1495 +1,4 @@
 SKIP: FAILED
 
-
-struct QuicksortObject {
-  numbers : array<i32, 10u>,
-}
-
-struct buf0 {
-  /* @offset(0) */
-  resolution : vec2<f32>,
-}
-
-var<private> obj : QuicksortObject;
-
-var<private> gl_FragCoord : vec4<f32>;
-
-@group(0) @binding(0) var<uniform> x_188 : buf0;
-
-var<private> x_GLF_color : vec4<f32>;
-
-fn swap_i1_i1_(i : ptr<function, i32>, j : ptr<function, i32>) {
-  var temp : i32;
-  let x_932 : i32 = temp;
-  temp = 0i;
-  temp = x_932;
-  let x_523 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_933 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_933;
-  let x_28 : i32 = *(i);
-  let x_934 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_934;
-  let x_524 : vec3<f32> = vec3<f32>(x_523.y, x_523.x, x_523.y);
-  let x_935 : i32 = temp;
-  temp = 0i;
-  temp = x_935;
-  let x_30 : ptr<private, i32> = &(obj.numbers[x_28]);
-  let x_936 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_936;
-  let x_31 : i32 = *(x_30);
-  let x_937 : i32 = temp;
-  temp = 0i;
-  temp = x_937;
-  temp = x_31;
-  let x_938 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_938;
-  let x_525 : vec3<f32> = vec3<f32>(x_523.z, vec3<f32>(1.0f, 2.0f, 3.0f).x, x_523.y);
-  let x_939 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_939;
-  let x_32 : i32 = *(i);
-  let x_940 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_940;
-  let x_33 : i32 = *(j);
-  let x_941 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_941;
-  let x_526 : vec3<f32> = vec3<f32>(x_525.x, x_525.z, x_525.z);
-  let x_942 : i32 = *(x_30);
-  *(x_30) = 0i;
-  *(x_30) = x_942;
-  let x_34 : ptr<private, i32> = &(obj.numbers[x_33]);
-  let x_35 : i32 = *(x_34);
-  let x_943 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_943;
-  let x_527 : vec2<f32> = vec2<f32>(x_526.x, x_526.x);
-  let x_36 : ptr<private, i32> = &(obj.numbers[x_32]);
-  let x_528 : vec3<f32> = vec3<f32>(x_524.x, x_524.z, x_524.x);
-  *(x_36) = x_35;
-  let x_944 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_944;
-  let x_529 : vec3<f32> = vec3<f32>(x_526.y, x_526.z, x_526.x);
-  let x_945 : i32 = *(i);
-  *(i) = 0i;
-  *(i) = x_945;
-  let x_37 : i32 = *(j);
-  let x_946 : i32 = temp;
-  temp = 0i;
-  temp = x_946;
-  let x_530 : vec2<f32> = vec2<f32>(x_529.z, x_529.y);
-  let x_947 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_947;
-  let x_38 : i32 = temp;
-  let x_948 : i32 = *(j);
-  *(j) = 0i;
-  *(j) = x_948;
-  let x_531 : vec3<f32> = vec3<f32>(x_527.x, x_526.y, x_526.x);
-  let x_949 : i32 = *(x_36);
-  *(x_36) = 0i;
-  *(x_36) = x_949;
-  let x_950 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_950;
-  let x_532 : vec3<f32> = vec3<f32>(x_528.x, x_528.y, x_528.x);
-  let x_951 : i32 = *(x_34);
-  *(x_34) = 0i;
-  *(x_34) = x_951;
-  obj.numbers[x_37] = x_38;
-  return;
-}
-
-fn performPartition_i1_i1_(l : ptr<function, i32>, h : ptr<function, i32>) -> i32 {
-  var param_3 : i32;
-  var i_1 : i32;
-  var j_1 : i32;
-  var param_2 : i32;
-  var param_1 : i32;
-  var param : i32;
-  var pivot : i32;
-  var x_537 : vec2<f32>;
-  var x_538 : vec3<f32>;
-  let x_952 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_952;
-  let x_41 : i32 = *(h);
-  let x_953 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_953;
-  let x_42 : ptr<private, i32> = &(obj.numbers[x_41]);
-  let x_954 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_954;
-  let x_43 : i32 = *(x_42);
-  let x_955 : i32 = param_3;
-  param_3 = 0i;
-  param_3 = x_955;
-  let x_534 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-  let x_956 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_956;
-  pivot = x_43;
-  let x_45 : i32 = *(l);
-  let x_957 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_957;
-  let x_958 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_958;
-  let x_535 : vec3<f32> = vec3<f32>(x_534.y, x_534.z, x_534.y);
-  let x_959 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_959;
-  i_1 = (x_45 - bitcast<i32>(1u));
-  let x_49 : i32 = *(l);
-  let x_536 : vec3<f32> = vec3<f32>(x_534.x, x_534.z, x_535.x);
-  j_1 = 10i;
-  let x_960 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_960;
-  loop {
-    var x_61 : ptr<private, i32>;
-    var x_539 : vec3<f32>;
-    var x_541 : vec3<f32>;
-    let x_961 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_961;
-    let x_962 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_962;
-    let x_55 : i32 = j_1;
-    let x_963 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_963;
-    x_537 = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    let x_964 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_964;
-    let x_56 : i32 = *(h);
-    let x_965 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_965;
-    let x_966 : i32 = param;
-    param = 0i;
-    param = x_966;
-    let x_967 : i32 = j_1;
-    j_1 = 0i;
-    j_1 = x_967;
-    x_538 = vec3<f32>(x_534.x, x_537.y, x_534.z);
-    let x_968 : i32 = param;
-    param = 0i;
-    param = x_968;
-    if ((x_55 <= (x_56 - bitcast<i32>(1u)))) {
-    } else {
-      break;
-    }
-    let x_60 : i32 = j_1;
-    let x_969 : i32 = *(x_42);
-    *(x_42) = 0i;
-    *(x_42) = x_969;
-    x_61 = obj.numbers[x_60];
-    let x_970 : i32 = *(h);
-    *(h) = 0i;
-    *(h) = x_970;
-    x_539 = vec3<f32>(x_537.x, x_535.z, x_537.x);
-    let x_971 : i32 = param_1;
-    param_1 = 0i;
-    param_1 = x_971;
-    let x_62 : ptr<undefined, i32> = x_61;
-    let x_972 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_972;
-    let x_63 : i32 = pivot;
-    let x_540 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_534.z);
-    let x_973 : i32 = i_1;
-    i_1 = 0i;
-    i_1 = x_973;
-    let x_974 : i32 = *(l);
-    *(l) = 0i;
-    *(l) = x_974;
-    x_541 = vec3<f32>(x_534.y, x_534.x, x_534.y);
-    let x_975 : i32 = pivot;
-    pivot = 0i;
-    pivot = x_975;
-    if ((x_62 <= x_63)) {
-      let x_542 : vec3<f32> = vec3<f32>(x_541.z, x_541.x, x_541.x);
-      let x_976 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_976;
-      let x_67 : i32 = i_1;
-      let x_977 : i32 = pivot;
-      pivot = 0i;
-      pivot = x_977;
-      let x_543 : vec2<f32> = vec2<f32>(x_539.x, x_541.y);
-      let x_978 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_978;
-      let x_979 : i32 = param;
-      param = 0i;
-      param = x_979;
-      i_1 = (x_67 + bitcast<i32>(1u));
-      let x_980 : i32 = *(l);
-      *(l) = 0i;
-      *(l) = x_980;
-      let x_544 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_540.x);
-      let x_70 : i32 = i_1;
-      let x_545 : vec2<f32> = vec2<f32>(x_537.y, x_538.x);
-      let x_981 : i32 = param;
-      param = 0i;
-      param = x_981;
-      param = x_70;
-      let x_982 : i32 = param;
-      param = 0i;
-      param = x_982;
-      let x_546 : vec2<f32> = vec2<f32>(x_545.x, x_545.x);
-      let x_983 : i32 = i_1;
-      i_1 = 0i;
-      i_1 = x_983;
-      let x_72 : i32 = j_1;
-      param_1 = x_72;
-      let x_984 : i32 = param_3;
-      param_3 = 0i;
-      param_3 = x_984;
-      swap_i1_i1_(&(param), &(param_1));
-      let x_985 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_985;
-    }
-    let x_986 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_986;
-
-    continuing {
-      let x_987 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_987;
-      let x_74 : i32 = j_1;
-      let x_988 : i32 = *(h);
-      *(h) = 0i;
-      *(h) = x_988;
-      let x_547 : vec3<f32> = vec3<f32>(x_539.x, x_541.z, x_541.z);
-      let x_989 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_989;
-      let x_990 : i32 = param;
-      param = 0i;
-      param = x_990;
-      j_1 = (1i + x_74);
-      let x_991 : i32 = param_1;
-      param_1 = 0i;
-      param_1 = x_991;
-      let x_548 : vec3<f32> = vec3<f32>(x_541.y, x_541.z, x_541.x);
-      let x_992 : ptr<undefined, i32> = x_61;
-      x_61 = 0i;
-      x_61 = x_992;
-    }
-  }
-  let x_76 : i32 = i_1;
-  let x_993 : i32 = *(x_42);
-  *(x_42) = 0i;
-  *(x_42) = x_993;
-  let x_549 : vec2<f32> = vec2<f32>(x_534.x, x_534.y);
-  let x_994 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_994;
-  let x_995 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_995;
-  i_1 = (1i + x_76);
-  let x_996 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_996;
-  let x_79 : i32 = i_1;
-  let x_997 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_997;
-  let x_550 : vec2<f32> = vec2<f32>(x_534.x, x_534.x);
-  let x_998 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_998;
-  param_2 = x_79;
-  let x_551 : vec2<f32> = vec2<f32>(x_534.y, x_536.x);
-  let x_999 : i32 = pivot;
-  pivot = 0i;
-  pivot = x_999;
-  let x_81 : i32 = *(h);
-  let x_552 : vec2<f32> = vec2<f32>(x_550.x, x_549.y);
-  let x_1000 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1000;
-  param_3 = x_81;
-  let x_1001 : i32 = i_1;
-  i_1 = 0i;
-  i_1 = x_1001;
-  let x_553 : vec2<f32> = vec2<f32>(x_549.y, x_552.x);
-  let x_1002 : i32 = *(h);
-  *(h) = 0i;
-  *(h) = x_1002;
-  swap_i1_i1_(&(param_2), &(param_3));
-  let x_1003 : i32 = *(l);
-  *(l) = 0i;
-  *(l) = x_1003;
-  let x_554 : vec2<f32> = vec2<f32>(x_536.z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1004 : i32 = param_1;
-  param_1 = 0i;
-  param_1 = x_1004;
-  let x_83 : i32 = i_1;
-  let x_1005 : i32 = param;
-  param = 0i;
-  param = x_1005;
-  let x_555 : vec2<f32> = vec2<f32>(x_534.y, x_534.x);
-  let x_1006 : i32 = j_1;
-  j_1 = 0i;
-  j_1 = x_1006;
-  return x_83;
-}
-
-fn quicksort_() {
-  var param_4 : i32;
-  var h_1 : i32;
-  var p : i32;
-  var l_1 : i32;
-  var top : i32;
-  var stack : array<i32, 10u>;
-  var param_5 : i32;
-  l_1 = 0i;
-  let x_1007 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1007;
-  h_1 = 9i;
-  let x_1008 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1008;
-  let x_556 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1009 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1009;
-  top = -1i;
-  let x_1010 : i32 = p;
-  p = 0i;
-  p = x_1010;
-  let x_93 : i32 = top;
-  let x_557 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-  let x_1011 : i32 = p;
-  p = 0i;
-  p = x_1011;
-  let x_94 : i32 = (x_93 + bitcast<i32>(1u));
-  let x_1012 : i32 = top;
-  top = 0i;
-  top = x_1012;
-  let x_558 : vec2<f32> = vec2<f32>(x_556.y, x_557.y);
-  let x_1013 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1013;
-  top = x_94;
-  let x_1014 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1014;
-  let x_559 : vec3<f32> = vec3<f32>(x_557.y, x_557.x, x_557.x);
-  let x_1015 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1015;
-  let x_95 : i32 = l_1;
-  let x_1016 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_1016;
-  let x_560 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_557.x);
-  let x_96 : ptr<function, i32> = &(stack[x_94]);
-  let x_1017 : array<i32, 10u> = stack;
-  stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-  stack = x_1017;
-  let x_561 : vec3<f32> = vec3<f32>(x_556.y, x_556.y, x_556.y);
-  let x_1018 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = 0i;
-  *(x_96) = x_95;
-  let x_1019 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1019;
-  let x_97 : i32 = top;
-  let x_1020 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1020;
-  let x_562 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, x_558.y, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_1021 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1021;
-  let x_98 : i32 = (x_97 + 1i);
-  let x_1022 : i32 = *(x_96);
-  *(x_96) = 0i;
-  *(x_96) = x_1022;
-  let x_563 : vec3<f32> = vec3<f32>(x_559.x, x_559.z, x_556.y);
-  top = x_98;
-  let x_1023 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1023;
-  let x_99 : i32 = h_1;
-  let x_1024 : i32 = param_4;
-  param_4 = 0i;
-  param_4 = x_1024;
-  let x_564 : vec3<f32> = vec3<f32>(x_558.x, x_561.x, x_558.y);
-  let x_1025 : i32 = l_1;
-  l_1 = 0i;
-  l_1 = x_1025;
-  let x_100 : ptr<function, i32> = &(stack[x_98]);
-  let x_1026 : i32 = param_5;
-  param_5 = 0i;
-  param_5 = x_1026;
-  let x_565 : vec2<f32> = vec2<f32>(x_564.z, x_564.z);
-  let x_1027 : i32 = p;
-  p = 0i;
-  p = x_1027;
-  *(x_100) = x_99;
-  loop {
-    let x_566 : vec3<f32> = vec3<f32>(x_563.x, x_563.x, x_563.x);
-    let x_1028 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1028;
-    let x_1029 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1029;
-    let x_106 : i32 = top;
-    let x_1030 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1030;
-    let x_567 : vec2<f32> = vec2<f32>(x_558.x, x_564.z);
-    let x_1031 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1031;
-    if ((x_106 >= bitcast<i32>(0u))) {
-    } else {
-      break;
-    }
-    let x_1032 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1032;
-    let x_568 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_563.y);
-    let x_1033 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1033;
-    let x_108 : i32 = top;
-    let x_569 : vec3<f32> = vec3<f32>(x_565.x, x_567.y, x_565.x);
-    let x_1034 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1034;
-    let x_570 : vec2<f32> = vec2<f32>(x_556.x, x_556.x);
-    let x_1035 : i32 = p;
-    p = 0i;
-    p = x_1035;
-    top = (x_108 - bitcast<i32>(1u));
-    let x_1036 : i32 = p;
-    p = 0i;
-    p = x_1036;
-    let x_110 : ptr<function, i32> = &(stack[x_108]);
-    let x_1037 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1037;
-    let x_111 : i32 = *(x_110);
-    let x_1038 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1038;
-    let x_571 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_564.y);
-    let x_1039 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1039;
-    h_1 = x_111;
-    let x_1040 : array<i32, 10u> = stack;
-    stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-    stack = x_1040;
-    let x_572 : vec2<f32> = vec2<f32>(x_562.y, x_561.y);
-    let x_1041 : i32 = p;
-    p = 0i;
-    p = x_1041;
-    let x_112 : i32 = top;
-    let x_1042 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1042;
-    let x_1043 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1043;
-    let x_573 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).z);
-    top = (x_112 - 1i);
-    let x_1044 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1044;
-    let x_574 : vec3<f32> = vec3<f32>(x_570.y, x_565.x, x_570.y);
-    let x_1045 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1045;
-    let x_114 : ptr<function, i32> = &(stack[x_112]);
-    let x_575 : vec2<f32> = vec2<f32>(x_564.y, x_564.z);
-    let x_1046 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1046;
-    let x_115 : i32 = *(x_114);
-    let x_1047 : i32 = p;
-    p = 0i;
-    p = x_1047;
-    let x_576 : vec3<f32> = vec3<f32>(x_573.y, x_573.y, x_565.x);
-    let x_1048 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1048;
-    l_1 = x_115;
-    let x_1049 : i32 = top;
-    top = 0i;
-    top = x_1049;
-    let x_118 : i32 = l_1;
-    param_4 = x_118;
-    let x_1050 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1050;
-    let x_577 : vec2<f32> = vec2<f32>(x_569.y, x_569.z);
-    let x_120 : i32 = h_1;
-    let x_578 : vec2<f32> = vec2<f32>(x_558.x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    param_5 = x_120;
-    let x_1051 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1051;
-    let x_121 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
-    let x_579 : vec2<f32> = vec2<f32>(x_567.x, x_568.x);
-    let x_1052 : i32 = param_5;
-    param_5 = 0i;
-    param_5 = x_1052;
-    p = x_121;
-    let x_1053 : i32 = param_4;
-    param_4 = 0i;
-    param_4 = x_1053;
-    let x_122 : i32 = p;
-    let x_1054 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1054;
-    let x_580 : vec2<f32> = vec2<f32>(x_568.y, x_568.y);
-    let x_1055 : i32 = l_1;
-    l_1 = 0i;
-    l_1 = x_1055;
-    let x_1056 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1056;
-    let x_124 : i32 = l_1;
-    let x_1057 : i32 = *(x_110);
-    *(x_110) = 0i;
-    *(x_110) = x_1057;
-    let x_1058 : i32 = h_1;
-    h_1 = 0i;
-    h_1 = x_1058;
-    let x_582 : vec2<f32> = vec2<f32>(x_567.y, x_573.x);
-    let x_1059 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1059;
-    if (((x_122 - bitcast<i32>(1u)) > x_124)) {
-      let x_1060 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1060;
-      let x_128 : i32 = top;
-      let x_583 : vec2<f32> = vec2<f32>(x_571.y, x_556.y);
-      let x_1061 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1061;
-      let x_1062 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1062;
-      let x_584 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_585 : vec3<f32> = vec3<f32>(x_580.y, x_577.x, x_577.x);
-      let x_130 : i32 = l_1;
-      let x_1063 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1063;
-      let x_586 : vec2<f32> = vec2<f32>(x_564.x, x_585.x);
-      let x_1064 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1064;
-      let x_131 : ptr<function, i32> = &(stack[(1i + x_128)]);
-      let x_1065 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1065;
-      let x_587 : vec3<f32> = vec3<f32>(x_566.y, x_566.y, x_563.x);
-      let x_1066 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1066;
-      *(x_131) = x_130;
-      let x_132 : i32 = top;
-      let x_1067 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1067;
-      let x_588 : vec2<f32> = vec2<f32>(x_575.y, x_575.x);
-      let x_1068 : i32 = *(x_131);
-      *(x_131) = 0i;
-      *(x_131) = x_1068;
-      let x_133 : i32 = bitcast<i32>((1u + bitcast<u32>(x_132)));
-      let x_1069 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1069;
-      let x_589 : vec3<f32> = vec3<f32>(x_576.z, x_588.y, x_576.z);
-      let x_1070 : i32 = h_1;
-      h_1 = 0i;
-      h_1 = x_1070;
-      top = x_133;
-      let x_1071 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1071;
-      let x_134 : i32 = p;
-      let x_590 : vec2<f32> = vec2<f32>(x_576.x, x_573.y);
-      let x_1072 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1072;
-      let x_136 : ptr<function, i32> = &(stack[x_133]);
-      let x_1073 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1073;
-      *(x_136) = (x_134 - bitcast<i32>(1u));
-      let x_1074 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1074;
-      let x_591 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_1075 : i32 = *(x_136);
-      *(x_136) = 0i;
-      *(x_136) = x_1075;
-    }
-    let x_1076 : i32 = *(x_96);
-    *(x_96) = 0i;
-    *(x_96) = x_1076;
-    let x_592 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-    let x_1077 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_1077;
-    let x_137 : i32 = p;
-    let x_1078 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1078;
-    let x_593 : vec3<f32> = vec3<f32>(x_571.z, x_556.x, x_556.y);
-    let x_1079 : i32 = p;
-    p = 0i;
-    p = x_1079;
-    let x_594 : vec3<f32> = vec3<f32>(x_563.z, x_563.x, x_575.x);
-    let x_1080 : i32 = *(x_114);
-    *(x_114) = 0i;
-    *(x_114) = x_1080;
-    let x_139 : i32 = h_1;
-    let x_1081 : i32 = top;
-    top = 0i;
-    top = x_1081;
-    let x_595 : vec3<f32> = vec3<f32>(x_560.z, x_568.x, x_560.x);
-    let x_1082 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1082;
-    let x_1083 : i32 = p;
-    p = 0i;
-    p = x_1083;
-    if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
-      let x_1084 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1084;
-      let x_596 : vec2<f32> = vec2<f32>(x_592.y, x_582.x);
-      let x_1085 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1085;
-      let x_143 : i32 = top;
-      let x_1086 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1086;
-      let x_597 : vec3<f32> = vec3<f32>(x_562.y, x_560.y, x_560.y);
-      let x_144 : i32 = (x_143 + 1i);
-      let x_1087 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1087;
-      top = x_144;
-      let x_1088 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1088;
-      let x_145 : i32 = p;
-      let x_1089 : i32 = param_5;
-      param_5 = 0i;
-      param_5 = x_1089;
-      let x_599 : vec3<f32> = vec3<f32>(x_560.z, x_560.x, x_568.x);
-      let x_1090 : i32 = p;
-      p = 0i;
-      p = x_1090;
-      let x_600 : vec3<f32> = vec3<f32>(x_556.x, x_580.x, x_580.x);
-      let x_1091 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1091;
-      let x_147 : ptr<function, i32> = &(stack[x_144]);
-      let x_1092 : i32 = *(x_110);
-      *(x_110) = 0i;
-      *(x_110) = x_1092;
-      let x_601 : vec2<f32> = vec2<f32>(x_563.x, x_563.y);
-      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
-      let x_1093 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1093;
-      let x_148 : i32 = top;
-      let x_1094 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1094;
-      let x_602 : vec2<f32> = vec2<f32>(x_565.y, x_599.y);
-      let x_1095 : array<i32, 10u> = stack;
-      stack = array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i);
-      stack = x_1095;
-      let x_149 : i32 = (x_148 + bitcast<i32>(1u));
-      let x_1096 : i32 = *(x_147);
-      *(x_147) = 0i;
-      *(x_147) = x_1096;
-      top = x_149;
-      let x_1097 : i32 = param_4;
-      param_4 = 0i;
-      param_4 = x_1097;
-      let x_150 : i32 = h_1;
-      let x_1098 : i32 = *(x_100);
-      *(x_100) = 0i;
-      *(x_100) = x_1098;
-      let x_1099 : i32 = *(x_96);
-      *(x_96) = 0i;
-      *(x_96) = x_1099;
-      stack[x_149] = x_150;
-      let x_1100 : i32 = *(x_114);
-      *(x_114) = 0i;
-      *(x_114) = x_1100;
-      let x_603 : vec3<f32> = vec3<f32>(x_568.y, x_564.x, x_564.x);
-      let x_1101 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1101;
-    }
-    let x_1102 : i32 = *(x_100);
-    *(x_100) = 0i;
-    *(x_100) = x_1102;
-
-    continuing {
-      let x_1103 : i32 = l_1;
-      l_1 = 0i;
-      l_1 = x_1103;
-      let x_604 : vec2<f32> = vec2<f32>(x_563.z, x_564.x);
-      let x_1104 : QuicksortObject = obj;
-      obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-      obj = x_1104;
-    }
-  }
-  let x_1105 : i32 = h_1;
-  h_1 = 0i;
-  h_1 = x_1105;
-  return;
-}
-
-fn main_1() {
-  var color : vec3<f32>;
-  var i_2 : i32;
-  var uv : vec2<f32>;
-  let x_717 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_717;
-  i_2 = 0i;
-  let x_721 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_721;
-  if (true) {
-    let x_722 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_722;
-    let x_431 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).x, vec3<f32>(1.0f, 2.0f, 3.0f).x);
-    let x_158 : i32 = i_2;
-    let x_723 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_723;
-    let x_725 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_725;
-    let x_432 : vec2<f32> = vec2<f32>(x_431.y, x_431.y);
-    let x_726 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_726;
-  }
-  let x_756 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_756;
-  let x_446 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().x);
-  let x_757 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_757;
-  quicksort_();
-  let x_758 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_758;
-  let x_184 : vec4<f32> = gl_FragCoord;
-  let x_759 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_759;
-  let x_447 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_760 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_760;
-  let x_185 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-  let x_448 : vec3<f32> = vec3<f32>(x_185.y, x_446.y, x_446.y);
-  let x_761 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_761;
-  let x_762 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_762;
-  let x_191 : vec2<f32> = x_188.resolution;
-  let x_763 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_763;
-  let x_449 : vec3<f32> = vec3<f32>(x_184.y, vec3<f32>(1.0f, 2.0f, 3.0f).z, x_184.w);
-  let x_764 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_764;
-  let x_192 : vec2<f32> = (x_185 / x_191);
-  let x_765 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_765;
-  let x_450 : vec2<f32> = vec2<f32>(x_447.x, x_185.y);
-  let x_766 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  let x_767 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_767;
-  color = x_766;
-  uv = x_192;
-  color = vec3<f32>(1.0f, 2.0f, 3.0f);
-  let x_768 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_768;
-  let x_451 : vec3<f32> = vec3<f32>(x_185.x, x_185.y, x_446.y);
-  let x_769 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_769;
-  let x_200 : ptr<private, i32> = &(obj.numbers[0u]);
-  let x_770 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_770;
-  let x_201 : i32 = *(x_200);
-  let x_771 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_771;
-  let x_772 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_772;
-  let x_206 : f32 = color.x;
-  let x_773 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_773;
-  let x_452 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec3<f32>(1.0f, 2.0f, 3.0f).y);
-  let x_774 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_774;
-  let x_775 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_775;
-  let x_453 : vec3<f32> = vec3<f32>(x_451.x, x_450.x, x_450.y);
-  color.x = (x_206 + f32(x_201));
-  let x_776 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_776;
-  let x_777 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_777;
-  let x_454 : vec2<f32> = vec2<f32>(x_184.y, x_184.y);
-  let x_210 : f32 = uv.x;
-  let x_455 : vec2<f32> = vec2<f32>(x_192.y, x_192.x);
-  let x_778 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_778;
-  let x_779 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_779;
-  if ((x_210 > 0.25f)) {
-    let x_780 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_780;
-    let x_781 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_781;
-    let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
-    let x_782 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_782;
-    let x_216 : i32 = obj.numbers[1i];
-    let x_783 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_783;
-    let x_457 : vec2<f32> = vec2<f32>(x_454.x, x_454.x);
-    let x_784 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_784;
-    let x_785 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_785;
-    let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).z, vec2<f32>().y);
-    let x_786 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_786;
-    let x_219 : f32 = color[0i];
-    let x_787 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_787;
-    let x_788 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_788;
-    let x_789 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_789;
-    let x_459 : vec3<f32> = vec3<f32>(x_454.y, x_454.y, x_447.y);
-    let x_790 : f32 = color[0i];
-    color[0i] = 0.0f;
-    color[0i] = x_790;
-    color.x = (f32(x_216) + x_219);
-    let x_791 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_791;
-  }
-  let x_792 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_792;
-  let x_793 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_793;
-  let x_223 : f32 = uv.x;
-  let x_794 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_794;
-  let x_460 : vec3<f32> = vec3<f32>(x_453.z, x_453.y, x_453.y);
-  let x_795 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_795;
-  let x_796 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_796;
-  let x_461 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
-  let x_797 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_797;
-  if ((x_223 > 0.5f)) {
-    let x_798 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_798;
-    let x_462 : vec2<f32> = vec2<f32>(x_446.x, x_446.x);
-    let x_799 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_799;
-    let x_229 : ptr<private, i32> = &(obj.numbers[2u]);
-    let x_800 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_800;
-    let x_463 : vec3<f32> = vec3<f32>(x_453.x, x_453.z, x_461.y);
-    let x_801 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_801;
-    let x_230 : i32 = *(x_229);
-    let x_802 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_802;
-    let x_803 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_803;
-    let x_804 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_804;
-    let x_464 : vec2<f32> = vec2<f32>(x_450.y, x_191.x);
-    let x_805 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_805;
-    let x_234 : f32 = color.y;
-    let x_806 : i32 = *(x_229);
-    *(x_229) = 0i;
-    *(x_229) = x_806;
-    let x_465 : vec2<f32> = vec2<f32>(x_463.x, x_185.x);
-    let x_807 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_807;
-    let x_808 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_808;
-    let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>().y);
-    let x_809 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_809;
-    color.y = (f32(x_230) + x_234);
-    let x_810 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_810;
-  }
-  let x_811 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_811;
-  let x_467 : vec2<f32> = vec2<f32>(x_191.x, x_191.x);
-  let x_812 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_812;
-  let x_238 : f32 = uv[0i];
-  let x_813 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_813;
-  let x_814 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_814;
-  if ((x_238 > 0.75f)) {
-    let x_815 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_815;
-    let x_245 : i32 = obj.numbers[3i];
-    let x_816 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_816;
-    let x_817 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_817;
-    let x_468 : vec3<f32> = vec3<f32>(x_467.x, x_467.x, x_467.x);
-    let x_818 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_818;
-    let x_819 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_819;
-    let x_249 : f32 = color.z;
-    let x_820 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_820;
-    let x_469 : vec3<f32> = vec3<f32>(x_467.x, x_191.y, x_467.y);
-    let x_821 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_821;
-    let x_822 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_822;
-    let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
-    let x_823 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_823;
-    color.z = (x_249 + f32(x_245));
-    let x_824 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_824;
-    let x_471 : vec2<f32> = vec2<f32>(x_470.y, x_470.y);
-  }
-  let x_825 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_825;
-  let x_472 : vec3<f32> = vec3<f32>(x_454.x, x_454.y, x_454.y);
-  let x_253 : ptr<private, i32> = &(obj.numbers[4i]);
-  let x_254 : i32 = *(x_253);
-  let x_826 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_826;
-  let x_827 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_827;
-  let x_473 : vec3<f32> = vec3<f32>(x_446.y, x_453.x, x_453.x);
-  let x_828 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_828;
-  let x_474 : vec2<f32> = vec2<f32>(x_191.x, x_184.z);
-  let x_829 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_829;
-  let x_257 : f32 = color.y;
-  let x_830 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_830;
-  let x_475 : vec2<f32> = vec2<f32>(x_467.x, x_450.x);
-  let x_831 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_831;
-  let x_832 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_832;
-  let x_476 : vec2<f32> = vec2<f32>(x_451.z, x_460.y);
-  color.y = (x_257 + f32(x_254));
-  let x_477 : vec3<f32> = vec3<f32>(vec2<f32>().x, x_472.x, vec2<f32>().y);
-  let x_833 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_833;
-  let x_834 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_834;
-  let x_478 : vec2<f32> = vec2<f32>(x_472.x, x_472.y);
-  let x_835 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_835;
-  let x_261 : f32 = uv.y;
-  let x_836 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_836;
-  let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
-  let x_837 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_837;
-  let x_838 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_838;
-  let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>().y);
-  let x_839 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_839;
-  if ((x_261 > 0.25f)) {
-    let x_481 : vec2<f32> = vec2<f32>(x_447.x, x_480.z);
-    let x_840 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_840;
-    let x_267 : i32 = obj.numbers[5u];
-    let x_841 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_841;
-    let x_842 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_842;
-    let x_843 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_843;
-    let x_270 : f32 = color.x;
-    let x_844 : f32 = uv[0i];
-    uv[0i] = 0.0f;
-    uv[0i] = x_844;
-    let x_482 : vec3<f32> = vec3<f32>(x_455.x, x_475.y, x_455.y);
-    let x_845 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_845;
-    let x_846 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_846;
-    let x_847 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_847;
-    let x_483 : vec3<f32> = vec3<f32>(x_184.w, x_184.w, x_192.x);
-    let x_848 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_848;
-    color.x = (f32(x_267) + x_270);
-    let x_484 : vec3<f32> = vec3<f32>(x_454.y, x_450.x, x_454.y);
-    let x_849 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_849;
-  }
-  let x_850 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_850;
-  let x_485 : vec3<f32> = vec3<f32>(x_467.x, x_450.y, x_450.x);
-  let x_851 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_851;
-  let x_852 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_852;
-  let x_274 : f32 = uv.y;
-  let x_853 : i32 = *(x_200);
-  *(x_200) = 0i;
-  *(x_200) = x_853;
-  if ((x_274 > 0.5f)) {
-    let x_854 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_854;
-    let x_486 : vec2<f32> = vec2<f32>(x_480.y, x_455.y);
-    let x_279 : ptr<private, i32> = &(obj.numbers[6u]);
-    let x_855 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_855;
-    let x_487 : vec2<f32> = vec2<f32>(x_449.z, x_449.y);
-    let x_856 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_856;
-    let x_280 : i32 = *(x_279);
-    let x_857 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_857;
-    let x_858 : i32 = i_2;
-    i_2 = 0i;
-    i_2 = x_858;
-    let x_859 : i32 = *(x_253);
-    *(x_253) = 0i;
-    *(x_253) = x_859;
-    let x_488 : vec2<f32> = vec2<f32>(x_473.z, x_473.y);
-    let x_283 : f32 = color.y;
-    let x_860 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_860;
-    let x_861 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_861;
-    let x_489 : vec2<f32> = vec2<f32>(x_475.y, x_475.x);
-    let x_862 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_862;
-    let x_863 : i32 = *(x_279);
-    *(x_279) = 0i;
-    *(x_279) = x_863;
-    let x_490 : vec2<f32> = vec2<f32>(x_480.z, x_480.z);
-    let x_864 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_864;
-    color.y = (f32(x_280) + x_283);
-    let x_865 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_865;
-    let x_491 : vec2<f32> = vec2<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_454.x);
-    let x_866 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_866;
-  }
-  let x_492 : vec2<f32> = vec2<f32>(x_455.y, x_455.y);
-  let x_867 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_867;
-  let x_287 : f32 = uv.y;
-  let x_868 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_868;
-  let x_493 : vec2<f32> = vec2<f32>(x_475.x, x_475.y);
-  let x_869 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_869;
-  let x_870 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_870;
-  let x_494 : vec3<f32> = vec3<f32>(x_191.x, x_191.y, x_191.y);
-  let x_871 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_871;
-  if ((x_287 > 0.75f)) {
-    let x_872 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_872;
-    let x_873 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_873;
-    let x_495 : vec3<f32> = vec3<f32>(x_192.y, x_192.x, x_192.y);
-    let x_874 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_874;
-    let x_293 : i32 = obj.numbers[7i];
-    let x_875 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_875;
-    let x_496 : vec3<f32> = vec3<f32>(x_475.x, x_467.y, x_467.x);
-    let x_876 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_876;
-    let x_497 : vec2<f32> = vec2<f32>(x_477.x, x_461.y);
-    let x_877 : i32 = *(x_200);
-    *(x_200) = 0i;
-    *(x_200) = x_877;
-    let x_878 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_878;
-    let x_498 : vec3<f32> = vec3<f32>(x_478.x, x_478.y, x_478.x);
-    let x_879 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_879;
-    let x_296 : f32 = color.z;
-    let x_880 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_880;
-    let x_499 : vec2<f32> = vec2<f32>(x_184.x, x_184.y);
-    let x_881 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_881;
-    let x_882 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_882;
-    let x_883 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_883;
-    let x_500 : vec3<f32> = vec3<f32>(x_499.y, x_499.y, x_494.z);
-    let x_884 : f32 = color.z;
-    color.z = 0.0f;
-    color.z = x_884;
-    color.z = (f32(x_293) + x_296);
-    let x_885 : f32 = color.y;
-    color.y = 0.0f;
-    color.y = x_885;
-    let x_501 : vec2<f32> = vec2<f32>(x_453.x, x_453.z);
-    let x_886 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_886;
-  }
-  let x_887 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_887;
-  let x_502 : vec2<f32> = vec2<f32>(x_451.y, x_192.y);
-  let x_888 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_888;
-  let x_300 : ptr<private, i32> = &(obj.numbers[8i]);
-  let x_301 : i32 = *(x_300);
-  let x_889 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_889;
-  let x_503 : vec2<f32> = vec2<f32>(x_185.x, x_451.z);
-  let x_890 : i32 = *(x_300);
-  *(x_300) = 0i;
-  *(x_300) = x_890;
-  let x_891 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_891;
-  let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>().x);
-  let x_892 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_892;
-  let x_505 : vec3<f32> = vec3<f32>(x_504.x, x_504.y, x_504.x);
-  let x_893 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_893;
-  let x_304 : f32 = color.z;
-  let x_894 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_894;
-  let x_506 : vec2<f32> = vec2<f32>(x_493.x, x_492.x);
-  let x_895 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_895;
-  let x_896 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_896;
-  let x_507 : vec2<f32> = vec2<f32>(x_461.x, x_447.x);
-  let x_897 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_897;
-  color.z = (x_304 + f32(x_301));
-  let x_898 : vec2<f32> = uv;
-  uv = vec2<f32>(0.0f, 0.0f);
-  uv = x_898;
-  let x_899 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_899;
-  let x_508 : vec3<f32> = vec3<f32>(x_461.y, x_461.x, x_506.y);
-  let x_900 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_900;
-  let x_308 : f32 = uv.x;
-  let x_901 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_901;
-  let x_509 : vec3<f32> = vec3<f32>(x_503.y, x_503.x, x_448.z);
-  let x_902 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_902;
-  let x_310 : f32 = uv.y;
-  let x_903 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_903;
-  let x_904 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_904;
-  let x_510 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
-  let x_905 : f32 = color.z;
-  color.z = 0.0f;
-  color.z = x_905;
-  let x_906 : i32 = i_2;
-  i_2 = 0i;
-  i_2 = x_906;
-  let x_511 : vec2<f32> = vec2<f32>(x_485.z, x_485.y);
-  let x_907 : vec3<f32> = color;
-  color = vec3<f32>(0.0f, 0.0f, 0.0f);
-  color = x_907;
-  let x_908 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_908;
-  let x_512 : vec3<f32> = vec3<f32>(x_455.y, x_455.y, x_455.y);
-  let x_909 : i32 = *(x_253);
-  *(x_253) = 0i;
-  *(x_253) = x_909;
-  if ((abs((x_308 - x_310)) < 0.25f)) {
-    let x_910 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_910;
-    let x_911 : QuicksortObject = obj;
-    obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-    obj = x_911;
-    let x_513 : vec3<f32> = vec3<f32>(x_505.z, x_505.x, x_448.x);
-    let x_912 : i32 = *(x_300);
-    *(x_300) = 0i;
-    *(x_300) = x_912;
-    let x_317 : i32 = obj.numbers[9u];
-    let x_514 : vec3<f32> = vec3<f32>(x_474.y, x_474.y, x_474.y);
-    let x_913 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_913;
-    let x_320 : f32 = color.x;
-    let x_914 : f32 = uv.y;
-    uv.y = 0.0f;
-    uv.y = x_914;
-    let x_515 : vec2<f32> = vec2<f32>(x_502.x, x_502.y);
-    let x_915 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_915;
-    let x_916 : vec3<f32> = color;
-    color = vec3<f32>(0.0f, 0.0f, 0.0f);
-    color = x_916;
-    let x_516 : vec2<f32> = vec2<f32>(x_452.x, x_452.x);
-    let x_917 : vec2<f32> = uv;
-    uv = vec2<f32>(0.0f, 0.0f);
-    uv = x_917;
-    let x_918 : f32 = uv.x;
-    uv.x = 0.0f;
-    uv.x = x_918;
-    let x_517 : vec3<f32> = vec3<f32>(vec2<f32>().x, vec2<f32>().x, vec2<f32>().y);
-    color.x = (f32(x_317) + x_320);
-    let x_919 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_919;
-    let x_518 : vec3<f32> = vec3<f32>(x_480.y, x_508.x, x_480.x);
-    let x_920 : f32 = color.x;
-    color.x = 0.0f;
-    color.x = x_920;
-  }
-  let x_921 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_921;
-  let x_325 : vec3<f32> = color;
-  let x_922 : f32 = uv[0i];
-  uv[0i] = 0.0f;
-  uv[0i] = x_922;
-  let x_519 : vec3<f32> = vec3<f32>(x_447.x, x_446.x, x_446.y);
-  let x_326 : vec3<f32> = normalize(x_325);
-  let x_923 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_923;
-  let x_924 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_924;
-  let x_925 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_925;
-  let x_926 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_926;
-  let x_520 : vec2<f32> = vec2<f32>(x_506.y, x_519.y);
-  let x_927 : f32 = color.y;
-  color.y = 0.0f;
-  color.y = x_927;
-  let x_330 : vec4<f32> = vec4<f32>(x_326.x, x_326.y, x_326.z, 1.0f);
-  let x_928 : f32 = uv.y;
-  uv.y = 0.0f;
-  uv.y = x_928;
-  let x_521 : vec3<f32> = vec3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f).y, vec3<f32>(1.0f, 2.0f, 3.0f).y, x_520.y);
-  let x_929 : f32 = uv.x;
-  uv.x = 0.0f;
-  uv.x = x_929;
-  x_GLF_color = x_330;
-  let x_930 : QuicksortObject = obj;
-  obj = QuicksortObject(array<i32, 10u>(0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i, 0i));
-  obj = x_930;
-  let x_522 : vec3<f32> = vec3<f32>(x_330.w, x_330.y, x_493.x);
-  let x_931 : f32 = color.x;
-  color.x = 0.0f;
-  color.x = x_931;
-  return;
-}
-
-struct main_out {
-  @location(0)
-  x_GLF_color_1 : vec4<f32>,
-}
-
-@fragment
-fn main(@builtin(position) gl_FragCoord_param : vec4<f32>) -> main_out {
-  gl_FragCoord = gl_FragCoord_param;
-  main_1();
-  return main_out(x_GLF_color);
-}
-
+input program is not valid
 error: function-scope 'var' must have a constructible type
diff --git a/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.glsl b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.glsl
index e677648..ee99c12 100644
--- a/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.glsl
@@ -5,8 +5,11 @@
 
 fn dot4I8Packed_881e62() {
   var res : i32 = dot4I8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
@@ -29,8 +32,11 @@
 
 fn dot4I8Packed_881e62() {
   var res : i32 = dot4I8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
@@ -53,8 +59,11 @@
 
 fn dot4I8Packed_881e62() {
   var res : i32 = dot4I8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
diff --git a/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.glsl
index acf55b6..000e824 100644
--- a/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.glsl
@@ -5,8 +5,11 @@
 
 fn dot4U8Packed_fbed7b() {
   var res : u32 = dot4U8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
@@ -29,8 +32,11 @@
 
 fn dot4U8Packed_fbed7b() {
   var res : u32 = dot4U8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
@@ -53,8 +59,11 @@
 
 fn dot4U8Packed_fbed7b() {
   var res : u32 = dot4U8Packed(1u, 1u);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
diff --git a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl
index 22638ea..5c15f8b 100644
--- a/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureBarrier/3d0f7e.wgsl.expected.glsl
@@ -1,15 +1,9 @@
 SKIP: FAILED
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-fn textureBarrier_3d0f7e() {
-  textureBarrier();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureBarrier_3d0f7e();
-}
-
-Failed to generate: error: Unknown builtin method: textureBarrier
+../../src/tint/lang/glsl/writer/ast_printer/ast_printer.cc:1294 internal compiler error: TINT_UNREACHABLE unexpected barrier builtin type textureBarrier
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.glsl
index 31029a2..ff34ef0 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/0ff9a4.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.glsl
index 876edc6..5e50b15 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/22b5b6.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.glsl
index 6c4d034..bd9e406 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/2674d8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.glsl
index cff2b1c..825397f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/346fee.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.glsl
index a338d42..6072292 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/35ee69.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.glsl
index 11f97c0..af089c8 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3963d0.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.glsl
index b3e471e..9fe8a83 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/3c66f0.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.glsl
index d997ea7..0e8222c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/439651.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.glsl
index b94e7fa..829cb6f 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/4acec7.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.glsl
index fe9a84b..b7e9105 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/879b73.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.glsl
index 2da1261..fddea47 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/8a35f9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.glsl
index fa06ee3..696fda4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9573f3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.glsl
index 7b14e6c..61ca1b4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/98b2d3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.glsl
index abddd70..cd05020 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9cd8ad.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.glsl
index ff61b88..2f41e9b 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/9fcc3b.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.glsl
index 010039d..f9f1d6a 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/a1598a.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.glsl
index 858e3b6..52c77a4 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/af46ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.glsl
index 0e8b1c8..fea9784 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b3ab5e.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   uvec2 res = uvec2(textureSize(arg_0_1, 1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.glsl
index 67f3776..a899a87 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/b51345.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.glsl
index 9d2675d..a75ac7e 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/bd94c8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.glsl
index 35d53088..d5876a2 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/cf2b50.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uvec2 res = uvec2(textureSize(arg_0_1, int(1u)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.glsl
index 4100c6f..ee2cc7c 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/e738f4.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.glsl
index a9b1922..be341af 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/ea25bc.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.glsl
index 0be986c..f96b5a9 100644
--- a/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureDimensions/f264a3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
index 714eae0..2e94228 100644
--- a/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/04fa78.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
index 842c357..7f076f8 100644
--- a/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/43025d.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
index 15d0f89..22074c7 100644
--- a/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/751f8a.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
index 63508bd..98079e1 100644
--- a/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/788010.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
index a998ff3..5b277ab 100644
--- a/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/7dd226.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
index bce8ff4..4d61191 100644
--- a/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/829357.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
index 01681ea..fb7991d 100644
--- a/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/8578bc.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
index 482f379..de4c0d7 100644
--- a/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/aaf6bd.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
index 79a9a50..9008afc 100644
--- a/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/be276f.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
index 87c676f..32f8b8a 100644
--- a/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/c0640c.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   ivec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
index 5c9ba97..5a3e425 100644
--- a/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d4b5c6.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
index ad11387..84af451 100644
--- a/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/d98d59.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
index f720f70..342d67e 100644
--- a/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/e2acac.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1u)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
index fd1cea5..1177dda 100644
--- a/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGather/f2c6e3.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   uvec4 res = textureGather(arg_1_arg_2, vec4(vec3(1.0f), float(1)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
index 0d6155f..c2f9ce3 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/2e409c.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
index 991d793..574dc43 100644
--- a/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec4 res = textureGather(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.glsl
index ca8029c..cc91bea 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/071ebc.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.glsl
index 6cf0e2a..3d86d9c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/34cefa.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.glsl
index 1c54488..7e22596 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/3580ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.glsl
index 406b57c..f1e5047 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/48ef47.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.glsl
index 9fd427f..b0ead4c 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/6b4321.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.glsl
index 6b98fb4..3e82929 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/7f28cf.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.glsl
index 367aaab..2a59534 100644
--- a/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLayers/c1eca9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.glsl
index c7664b0..0eb3381 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/181090.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.glsl
index fbcdb5a..d227cff 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a3fa9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.glsl
index c343e94..c52cca4 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/1a7fc3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.glsl
index 8ba1aa1..455a6dd 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2267d8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.glsl
index a355d45..5328a0e 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/24b2c6.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.glsl
index 2cc5e70..3bac70a 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2bea6c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.glsl
index 980291b..3340aa7 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/2df1ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.glsl
index bf08402..a9d7b11 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/46dbd8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.glsl
index 4709283..52b91fd 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/60d9b8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.glsl
index 337fd1f..6e5434f 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/903920.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.glsl
index 5f05e9a..881403c 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/9a1a65.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.glsl
index 2eab57c..95100a2 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/adc783.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.glsl
index 93d9256..b472293 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ae911c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.glsl
index f5f25b1..58a704d 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c386c8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.glsl
index 1cb1e75..bd27345 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c399f9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.glsl
index a2e9ed3..e483938 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/c8c25c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.glsl
index 1c2e0fc..13cad15 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d63126.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.glsl
index 642af9e..cbae065 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/d8f73b.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.glsl
index 3e6a49a..08df6db 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/ef7944.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.glsl
index 21c3943..ab6e7a9 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/efd6df.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.glsl
index f0a6630..859fb77 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/f742c0.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.glsl
index f768306..9786ed1 100644
--- a/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumLevels/fe2171.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.glsl
index d971b8c..31b1678 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/50f399.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.glsl
index 1c6ab36..c307f63 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/c1a777.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.glsl
index 642c5e5..f7c2fb2 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/dbb799.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.glsl
index 746dd12..b0a3de0 100644
--- a/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureNumSamples/ecd321.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
index 8baec25..aeadab1 100644
--- a/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/4703d0.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_4703d0() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -18,8 +23,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
index 25e8a68..6e1418e 100644
--- a/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/4dd1bf.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSample_4dd1bf() {
   vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
index a68ee24..334d883 100644
--- a/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/60bf45.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_60bf45() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -18,8 +23,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
index db08545..706ab81 100644
--- a/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/7fd8cb.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_7fd8cb() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 0.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
index daf390f..fb0a30f 100644
--- a/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/bc7477.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSample_bc7477() {
   vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
index bdf506d..ad4f493 100644
--- a/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSample/c2f4e8.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_c2f4e8() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 0.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
index c0fd5d1..c47b918 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/c6953d.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleBias_c6953d() {
   vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
index 50f039d..7147734 100644
--- a/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBias/eed7c4.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleBias_eed7c4() {
   vec4 res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
index 978805e..0cdd8b4 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/1912e5.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_1912e5() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
index d5e3a67..5b6ece1 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/7b5025.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_7b5025() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -18,8 +23,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
index 051c0c8..3809085 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/a3ca7e.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_a3ca7e() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
index 04fc31f..4d2c6b3 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompare/af1051.wgsl.expected.glsl
@@ -1,12 +1,17 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_af1051() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -18,8 +23,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index 63af8d1..51e3437 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
index 3e367b5..33f7105 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/958c87.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   float res = texture(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
index 8cead6f..58135fc 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
index 217eb75..6a1d55e 100644
--- a/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   float res = textureOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 1.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
index e72a4c4..b62b63a 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/bbb58f.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
index 33fc8ac..196d845 100644
--- a/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleGrad/e383db.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec4 res = textureGrad(arg_0_arg_1, vec4(vec3(1.0f), float(1)), vec3(1.0f), vec3(1.0f));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
index cb8357c..6ba3037 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/0bdd9a.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
index 257102d..1ba1598 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
index b185131..31137d8 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
index 9baf6b8..e7981b5 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/2974eb.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
index adfd962..6f23731 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36780e.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
index 4c73009..02a08f8 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/36f0d3.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
index 9b99c65..1e961ea 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/3c3442.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
index 6019b3c..d548d59 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/615583.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
index 598fdcd..e07508a 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/941a53.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
index ad32382..3c298c1 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/a12142.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
index 3bb1d52..6468de9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/aab3b9.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec4 res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), 1.0f);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
index cc79d05..d70dacd 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1)), float(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
index 2989c0e..45939a3 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ae92a2.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLod' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), 0.0f), float(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLod' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLod' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
index b6a33e0..205e550 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/cdfe0f.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1u), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
index 22db161..30404a5 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/e6ce9e.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -22,19 +27,24 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -46,8 +56,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:11: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -56,8 +66,13 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(vec2(1.0f), float(1u)), 0.0f), float(1), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -70,8 +85,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
index 8cf3126..ec067e9 100644
--- a/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleLevel/ff11bc.wgsl.expected.glsl
@@ -4,8 +4,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -56,8 +66,13 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   float res = textureLod(arg_0_arg_1, vec4(vec3(1.0f), float(1u)), float(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
index 02179c8..3fd83c0 100644
--- a/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/064c7f.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
index a93d203..d15bd7c 100644
--- a/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2796b4.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
diff --git a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
index a307eae..75c289e 100644
--- a/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/2d2835.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
diff --git a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
index 36dda83..811994f 100644
--- a/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/31745b.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
diff --git a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
index 4c4e4ed..10ea993 100644
--- a/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3d6f01.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_3d6f01() {
diff --git a/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.glsl
index 5efc829..83343f2 100644
--- a/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/3fb31f.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_3fb31f() {
diff --git a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
index 567bc86..513ea22 100644
--- a/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4c454f.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
diff --git a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
index 6bdb8e2..da2d84e 100644
--- a/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/4d359d.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
diff --git a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
index 75e20e2..a2076af 100644
--- a/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/506a71.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
diff --git a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
index 8a2245b..8eaba5d 100644
--- a/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/5bc4f3.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
diff --git a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
index e72fa95..c5e8448 100644
--- a/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/602b5a.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_602b5a() {
diff --git a/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
index b696272..6ffa3b1 100644
--- a/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/658a74.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
diff --git a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
index 08c8688..479cdb9 100644
--- a/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/682fd6.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
diff --git a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
index b916425..c5dd7cc 100644
--- a/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/726472.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
diff --git a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
index ca9911c..ff9d944 100644
--- a/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/72fa64.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
diff --git a/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
index 572187a..bb97490 100644
--- a/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/7bb211.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
diff --git a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
index 5b22287..a513fc3 100644
--- a/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/83bcc1.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
diff --git a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
index ed7e122..e64f609 100644
--- a/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/872747.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
diff --git a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
index 5d8afd9..89a95a7 100644
--- a/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/9f5318.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
diff --git a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
index ca4082b..ef96837 100644
--- a/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ac67aa.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
diff --git a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
index 44165f1..2aac124 100644
--- a/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/b77161.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b77161() {
diff --git a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
index a75087a..e3bf66b 100644
--- a/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/c863be.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
diff --git a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
index 5de1007..d2bec46 100644
--- a/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d73b5c.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
diff --git a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
index f12a334..64bc5d7 100644
--- a/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/d82b0a.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
index 48d3770..cf43005 100644
--- a/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dde364.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
index 40ed60c..2ae8a17 100644
--- a/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dfa9a1.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
diff --git a/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
index e12b601..2fdb4ec 100644
--- a/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/dffb13.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
diff --git a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
index 4e2d552..7cf30ef 100644
--- a/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/ee6acc.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
diff --git a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
index 1b33331..1cc763d 100644
--- a/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/f9be83.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
diff --git a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
index eceabec..0701715 100644
--- a/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureStore/fcbe66.wgsl.expected.glsl
@@ -28,7 +28,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
diff --git a/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.glsl b/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.glsl
index 04bfe47..bbac611 100644
--- a/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/dot4I8Packed/881e62.wgsl.expected.glsl
@@ -7,8 +7,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : i32 = dot4I8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
@@ -33,8 +36,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : i32 = dot4I8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
@@ -59,8 +65,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : i32 = dot4I8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : i32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4I8Packed_881e62();
diff --git a/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.glsl b/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.glsl
index 2a5cb1e..e2ab67e 100644
--- a/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/dot4U8Packed/fbed7b.wgsl.expected.glsl
@@ -7,8 +7,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : u32 = dot4U8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
@@ -33,8 +36,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : u32 = dot4U8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
@@ -59,8 +65,11 @@
   var arg_0 = 1u;
   var arg_1 = 1u;
   var res : u32 = dot4U8Packed(arg_0, arg_1);
+  prevent_dce = res;
 }
 
+@group(2) @binding(0) var<storage, read_write> prevent_dce : u32;
+
 @vertex
 fn vertex_main() -> @builtin(position) vec4<f32> {
   dot4U8Packed_fbed7b();
diff --git a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl
index 22638ea..5c15f8b 100644
--- a/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureBarrier/3d0f7e.wgsl.expected.glsl
@@ -1,15 +1,9 @@
 SKIP: FAILED
 
-
-enable chromium_experimental_read_write_storage_texture;
-
-fn textureBarrier_3d0f7e() {
-  textureBarrier();
-}
-
-@compute @workgroup_size(1)
-fn compute_main() {
-  textureBarrier_3d0f7e();
-}
-
-Failed to generate: error: Unknown builtin method: textureBarrier
+../../src/tint/lang/glsl/writer/ast_printer/ast_printer.cc:1294 internal compiler error: TINT_UNREACHABLE unexpected barrier builtin type textureBarrier
+********************************************************************
+*  The tint shader compiler has encountered an unexpected error.   *
+*                                                                  *
+*  Please help us fix this issue by submitting a bug report at     *
+*  crbug.com/tint with the source program that triggered the bug.  *
+********************************************************************
diff --git a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.glsl
index 3f62797..b5eb877 100644
--- a/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/0ff9a4.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_0ff9a4() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.glsl
index 0368a8f..c79fd8f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/22b5b6.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_22b5b6() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.glsl
index 6c4d034..bd9e406 100644
--- a/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/2674d8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_2674d8() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.glsl
index 713c960..0d00fbd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/346fee.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_346fee() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.glsl
index a338d42..6072292 100644
--- a/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/35ee69.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_35ee69() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.glsl
index 2d0bfef..cd80115 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3963d0.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3963d0() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.glsl
index 7210170..aee6d45 100644
--- a/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/3c66f0.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_3c66f0() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.glsl
index d997ea7..0e8222c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/439651.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_439651() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.glsl
index b94e7fa..829cb6f 100644
--- a/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/4acec7.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_4acec7() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.glsl
index fe9a84b..b7e9105 100644
--- a/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/879b73.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_879b73() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.glsl
index 2da1261..fddea47 100644
--- a/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/8a35f9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_8a35f9() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.glsl
index fa06ee3..696fda4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9573f3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9573f3() {
   uvec2 res = uvec2(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.glsl
index 7b14e6c..61ca1b4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/98b2d3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_98b2d3() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.glsl
index abddd70..cd05020 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9cd8ad.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_9cd8ad() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.glsl
index ff61b88..2f41e9b 100644
--- a/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/9fcc3b.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_9fcc3b() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.glsl
index 010039d..f9f1d6a 100644
--- a/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/a1598a.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_a1598a() {
   uvec2 res = uvec2(textureSize(arg_0_1, 0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.glsl
index 858e3b6..52c77a4 100644
--- a/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/af46ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_af46ab() {
   uvec2 res = uvec2(imageSize(arg_0).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.glsl
index 5b81b60..749a7dd 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b3ab5e.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_b3ab5e() {
   int arg_1 = 1;
   uvec2 res = uvec2(textureSize(arg_0_1, arg_1).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.glsl
index 67f3776..a899a87 100644
--- a/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/b51345.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_b51345() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.glsl
index 307d2cf..ae638c0 100644
--- a/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/bd94c8.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_bd94c8() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.glsl
index f22135b..917f3d1 100644
--- a/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/cf2b50.wgsl.expected.glsl
@@ -3,9 +3,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -29,12 +34,17 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -55,9 +65,14 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec2 inner;
+} prevent_dce;
+
 void textureDimensions_cf2b50() {
   uint arg_1 = 1u;
   uvec2 res = uvec2(textureSize(arg_0_1, int(arg_1)).xy);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.glsl
index 4100c6f..ee2cc7c 100644
--- a/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/e738f4.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec3 inner;
+} prevent_dce;
+
 void textureDimensions_e738f4() {
   uvec3 res = uvec3(imageSize(arg_0));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.glsl
index a9b1922..be341af 100644
--- a/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/ea25bc.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_ea25bc() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.glsl
index 0be986c..f96b5a9 100644
--- a/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureDimensions/f264a3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureDimensions_f264a3() {
   uint res = uvec2(imageSize(arg_0)).x;
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
index ae4d72d..67bd682 100644
--- a/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/04fa78.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_04fa78() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
index cd6c7d2..1b9a515 100644
--- a/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/43025d.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_43025d() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
index b897f9e..3a43821 100644
--- a/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/751f8a.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_751f8a() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
index 7afc09f..df87a4d 100644
--- a/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/788010.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_788010() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
index cbab069..f9a140a 100644
--- a/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/7dd226.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_7dd226() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
index 6f9e39d..a5c94da 100644
--- a/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/829357.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_829357() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
index 97ac25f..33fb3dd 100644
--- a/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/8578bc.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_8578bc() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
index b357ab0..35fa7b9 100644
--- a/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/aaf6bd.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_aaf6bd() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
index 77c9caa..bc9fb98 100644
--- a/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/be276f.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_be276f() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
index 207c477..7ada9e5 100644
--- a/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/c0640c.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  ivec4 inner;
+} prevent_dce;
+
 void textureGather_c0640c() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   ivec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
index 6278040..24e0424 100644
--- a/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d4b5c6.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_d4b5c6() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
index 7ddd1c5..5665e28 100644
--- a/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/d98d59.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGather_d98d59() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   vec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
index 50bc90c..9c43585 100644
--- a/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/e2acac.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_e2acac() {
   vec3 arg_3 = vec3(1.0f);
   uint arg_4 = 1u;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), int(1u));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
index db3a370..199bacc 100644
--- a/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGather/f2c6e3.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -31,14 +36,19 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -60,10 +70,15 @@
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uvec4 inner;
+} prevent_dce;
+
 void textureGather_f2c6e3() {
   vec3 arg_3 = vec3(1.0f);
   int arg_4 = 1;
   uvec4 res = textureGather(arg_1_arg_2, vec4(arg_3, float(arg_4)), 1);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
index 5840d60..6193a66 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/2e409c.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_2e409c() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
index d969eeb..39e1bce 100644
--- a/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureGatherCompare_60d2d1() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureGather(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
index ca8029c..cc91bea 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/071ebc.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_071ebc() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
index 6cf0e2a..3d86d9c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/34cefa.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_34cefa() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
index 1c54488..7e22596 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/3580ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_3580ab() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
index 406b57c..f1e5047 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/48ef47.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_48ef47() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
index 9fd427f..b0ead4c 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/6b4321.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_6b4321() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
index 6b98fb4..3e82929 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/7f28cf.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_7f28cf() {
   uint res = uint(imageSize(arg_0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
index 367aaab..2a59534 100644
--- a/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLayers/c1eca9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLayers_c1eca9() {
   uint res = uint(textureSize(arg_0_1, 0).z);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.glsl
index c7664b0..0eb3381 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/181090.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_181090() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.glsl
index fbcdb5a..d227cff 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a3fa9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a3fa9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.glsl
index c343e94..c52cca4 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/1a7fc3.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_1a7fc3() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.glsl
index 8ba1aa1..455a6dd 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2267d8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2267d8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.glsl
index a355d45..5328a0e 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/24b2c6.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_24b2c6() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.glsl
index 2cc5e70..3bac70a 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2bea6c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2bea6c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.glsl
index 980291b..3340aa7 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/2df1ab.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_2df1ab() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.glsl
index bf08402..a9d7b11 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/46dbd8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_46dbd8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.glsl
index 4709283..52b91fd 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/60d9b8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_60d9b8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.glsl
index 337fd1f..6e5434f 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/903920.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_903920() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.glsl
index 5f05e9a..881403c 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/9a1a65.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_9a1a65() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.glsl
index 2eab57c..95100a2 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/adc783.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_adc783() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.glsl
index 93d9256..b472293 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ae911c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ae911c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.glsl
index f5f25b1..58a704d 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c386c8.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c386c8() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.glsl
index 1cb1e75..bd27345 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c399f9.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c399f9() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.glsl
index a2e9ed3..e483938 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/c8c25c.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCube arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_c8c25c() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.glsl
index 1c2e0fc..13cad15 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d63126.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d63126() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.glsl
index 642af9e..cbae065 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/d8f73b.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp samplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_d8f73b() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.glsl
index 3e6a49a..08df6db 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/ef7944.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler3D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_ef7944() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.glsl
index 21c3943..ab6e7a9 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/efd6df.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_efd6df() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.glsl
index f0a6630..859fb77 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/f742c0.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2D arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_f742c0() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.glsl
index f768306..9786ed1 100644
--- a/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumLevels/fe2171.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -28,11 +33,16 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usamplerCubeArray arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumLevels_fe2171() {
   uint res = uint(textureQueryLevels(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.glsl
index d971b8c..31b1678 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/50f399.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp usampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_50f399() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.glsl
index 1c6ab36..c307f63 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/c1a777.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp isampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_c1a777() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.glsl
index 642c5e5..f7c2fb2 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/dbb799.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_dbb799() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.glsl
index 746dd12..b0a3de0 100644
--- a/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureNumSamples/ecd321.wgsl.expected.glsl
@@ -3,8 +3,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -21,18 +26,23 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -44,8 +54,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:10: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,8 +63,13 @@
 #version 310 es
 
 uniform highp sampler2DMS arg_0_1;
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  uint inner;
+} prevent_dce;
+
 void textureNumSamples_ecd321() {
   uint res = uint(textureSamples(arg_0_1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -67,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:9: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
index 3cf8700..5edd442 100644
--- a/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/4703d0.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_4703d0() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -20,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
index d5232d5..1406316 100644
--- a/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/4dd1bf.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSample_4dd1bf() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
index c97beb8..8369fa8 100644
--- a/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/60bf45.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_60bf45() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -20,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
index 83da0bc..181f379 100644
--- a/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/7fd8cb.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_7fd8cb() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
index d93ec35..8c31f9d 100644
--- a/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/bc7477.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSample_bc7477() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
index 8252825..a60ab83 100644
--- a/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSample/c2f4e8.wgsl.expected.glsl
@@ -1,14 +1,19 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSample_c2f4e8() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), 0.0f);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
index 18a388a..79da440 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/c6953d.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleBias_c6953d() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
index 6cc7cbb..cb432b4 100644
--- a/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBias/eed7c4.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleBias_eed7c4() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
index 18aa1a8..a00d947 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/1912e5.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_1912e5() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
index 235b30d..8210254 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/7b5025.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_7b5025() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -21,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
index b87a8e2..0c5c9cd 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/a3ca7e.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_a3ca7e() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
index 57f13c2..663a2ea 100644
--- a/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompare/af1051.wgsl.expected.glsl
@@ -1,15 +1,20 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompare_af1051() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -21,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index 5fb7acf..a263c33 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_4cf3a2() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
index ce7a066..91ffdd8 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/958c87.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_958c87() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = texture(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
index 05d1ed3..bf1f508 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/b6e47c.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_b6e47c() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
index c2e279e..bfff2c6 100644
--- a/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleCompareLevel/bcb3dd.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleCompareLevel_bcb3dd() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   float res = textureOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
index baf5196..7ec0fba 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/bbb58f.wgsl.expected.glsl
@@ -4,12 +4,17 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -33,16 +38,21 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -64,12 +74,17 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_bbb58f() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
index 07d9151..8a6a4ab 100644
--- a/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleGrad/e383db.wgsl.expected.glsl
@@ -4,12 +4,17 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -33,16 +38,21 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -64,12 +74,17 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleGrad_e383db() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   vec3 arg_4 = vec3(1.0f);
   vec3 arg_5 = vec3(1.0f);
   vec4 res = textureGrad(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4, arg_5);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
index 0b9c461..71f2d5d 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/0bdd9a.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_0bdd9a() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
index cb9030e..6ca5955 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -24,21 +29,26 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:8: 'textureLod' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
+ERROR: 0:12: 'textureLod' : no matching overloaded function found 
+ERROR: 0:12: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -50,8 +60,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1b0291() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -76,8 +91,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:8: 'textureLod' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
+ERROR: 0:12: 'textureLod' : no matching overloaded function found 
+ERROR: 0:12: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
index 6f374db..30292e8 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLod' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLod' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_1bf73e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
index 0e39fc1..58dfbdc 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/2974eb.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLod' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLod' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_2974eb() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
index 294b600..af9d85e 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36780e.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36780e() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
index b157b7d..5364cae 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/36f0d3.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_36f0d3() {
   vec2 arg_2 = vec2(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
index 8b2a128..020811a 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/3c3442.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLod' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLod' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_3c3442() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
index a01a92b..5ebdf2b 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/615583.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLod' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLod' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_615583() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
index 9ecab6d..5835b41 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/941a53.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_941a53() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
index 2e205ca..ff289fe 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/a12142.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_a12142() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   uint arg_4 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
index ed7ade4..5044ab0 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/aab3b9.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  vec4 inner;
+} prevent_dce;
+
 void textureSampleLevel_aab3b9() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float arg_4 = 1.0f;
   vec4 res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), arg_4);
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
index 3741daf..13c0567 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae5e39() {
   vec3 arg_2 = vec3(1.0f);
   int arg_3 = 1;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
index 54a8246..7b945e3 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ae92a2.wgsl.expected.glsl
@@ -4,10 +4,15 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -24,21 +29,26 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:8: 'textureLod' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
+ERROR: 0:12: 'textureLod' : no matching overloaded function found 
+ERROR: 0:12: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -50,8 +60,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLod' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLod' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -60,10 +70,15 @@
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ae92a2() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, 0.0f), float(arg_3));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -76,8 +91,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:8: 'textureLod' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
+ERROR: 0:12: 'textureLod' : no matching overloaded function found 
+ERROR: 0:12: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
index e6e12b3..1c447d3 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/cdfe0f.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_cdfe0f() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   uint arg_4 = 1u;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
index 61e1891..f6eefd5 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/e6ce9e.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -25,22 +30,27 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -52,8 +62,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:14: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:14: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -62,11 +72,16 @@
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_e6ce9e() {
   vec2 arg_2 = vec2(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLodOffset(arg_0_arg_1, vec4(vec3(arg_2, float(arg_3)), 0.0f), float(arg_4), ivec2(1));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
@@ -79,8 +94,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:13: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
index e55c383..9dc09f7 100644
--- a/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleLevel/ff11bc.wgsl.expected.glsl
@@ -4,11 +4,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 vec4 vertex_main() {
@@ -32,15 +37,20 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void fragment_main() {
@@ -62,11 +72,16 @@
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
+layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
+  float inner;
+} prevent_dce;
+
 void textureSampleLevel_ff11bc() {
   vec3 arg_2 = vec3(1.0f);
   uint arg_3 = 1u;
   int arg_4 = 1;
   float res = textureLod(arg_0_arg_1, vec4(arg_2, float(arg_3)), float(arg_4));
+  prevent_dce.inner = res;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
index 77b9685..163b524 100644
--- a/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/064c7f.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
diff --git a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
index 0bd8075..5256e01 100644
--- a/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2796b4.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
diff --git a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
index 0b8dd66..e4b5c58 100644
--- a/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/2d2835.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_2d2835() {
diff --git a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
index 4a1906c..f77f8ec 100644
--- a/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/31745b.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
diff --git a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
index a74081b..da43f2e 100644
--- a/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3d6f01.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_3d6f01() {
diff --git a/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.glsl
index 0b57590..f60b4b7 100644
--- a/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/3fb31f.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_3fb31f() {
diff --git a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
index 71958aa..81f91a4 100644
--- a/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4c454f.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_4c454f() {
diff --git a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
index 3fdf50e..0dec00f 100644
--- a/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/4d359d.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_4d359d() {
diff --git a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
index d72182b..b89a69b 100644
--- a/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/506a71.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_506a71() {
diff --git a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
index 7272afa..b9b82a9 100644
--- a/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/5bc4f3.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_5bc4f3() {
diff --git a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
index b5afeea..c268e8b 100644
--- a/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/602b5a.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_602b5a() {
diff --git a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
index 3ad8560..79bdaec 100644
--- a/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/658a74.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_658a74() {
diff --git a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
index 6162fa8..4c09775 100644
--- a/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/682fd6.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
diff --git a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
index e7efc9f..1748bce 100644
--- a/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/726472.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_726472() {
diff --git a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
index e76c7ed..3646505 100644
--- a/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/72fa64.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_72fa64() {
diff --git a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
index 12d8707..8fec3a0 100644
--- a/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/7bb211.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7bb211() {
diff --git a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
index dd1fb9e..16232a1 100644
--- a/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/83bcc1.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_83bcc1() {
diff --git a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
index 3b48a87..ada20a8 100644
--- a/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/872747.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_872747() {
diff --git a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
index 18cc9b6..a3671a5 100644
--- a/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/9f5318.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9f5318() {
diff --git a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
index 3d10698..4fded95 100644
--- a/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ac67aa.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
diff --git a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
index 1d0eb51..d800252 100644
--- a/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/b77161.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_b77161() {
diff --git a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
index 519e05f..646a2d0 100644
--- a/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/c863be.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
diff --git a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
index d3d2143..1927c6c 100644
--- a/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d73b5c.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_d73b5c() {
diff --git a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
index 66589dc..e39f155 100644
--- a/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/d82b0a.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_d82b0a() {
diff --git a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
index af5d0086..46fd71a 100644
--- a/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dde364.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
diff --git a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
index fb3f1ce..2471d3d 100644
--- a/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dfa9a1.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_dfa9a1() {
diff --git a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
index 28f9b87..a967ac5 100644
--- a/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/dffb13.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dffb13() {
diff --git a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
index 7e4e5ea..926adf6 100644
--- a/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/ee6acc.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
diff --git a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
index 5de9e5f..3a101c0 100644
--- a/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/f9be83.wgsl.expected.glsl
@@ -31,7 +31,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
diff --git a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
index 5229147..d5fb9b6 100644
--- a/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureStore/fcbe66.wgsl.expected.glsl
@@ -30,7 +30,7 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_fcbe66() {
diff --git a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
index aeeb396..4926ee2 100644
--- a/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
+++ b/test/tint/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
@@ -6,8 +6,7 @@
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
   int res = 0;
-  int x_16 = int(uint(textureSamples(arg_0_1)));
-  res = x_16;
+  res = int(uint(textureSamples(arg_0_1)));
   return;
 }
 
@@ -48,13 +47,12 @@
 
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
   int res = 0;
-  int x_16 = int(uint(textureSamples(arg_0_1)));
-  res = x_16;
+  res = int(uint(textureSamples(arg_0_1)));
   return;
 }
 
@@ -87,8 +85,7 @@
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
   int res = 0;
-  int x_16 = int(uint(textureSamples(arg_0_1)));
-  res = x_16;
+  res = int(uint(textureSamples(arg_0_1)));
   return;
 }
 
diff --git a/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.glsl b/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.glsl
index f88e037..a12f56e 100644
--- a/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.glsl
+++ b/test/tint/shader_io/compute_subgroup_builtins.wgsl.expected.glsl
@@ -16,8 +16,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:13: 'tint_symbol_2' : undeclared identifier
-ERROR: 0:13: '' : compilation terminated
+ERROR: 0:13: 'tint_symbol_2' : undeclared identifier 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.glsl b/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.glsl
index 224650c..3b0a9a6 100644
--- a/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.glsl
+++ b/test/tint/shader_io/compute_subgroup_builtins_struct.wgsl.expected.glsl
@@ -22,8 +22,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:18: 'tint_symbol_2' : undeclared identifier
-ERROR: 0:18: '' : compilation terminated
+ERROR: 0:18: 'tint_symbol_2' : undeclared identifier 
+ERROR: 0:18: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl
index a68ba3b..70fb0e3 100644
--- a/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Good_CubeArray_SpvParserHandleTest_ImageCoordsTest_MakeCoordinateOperandsForImageAccess_0.spvasm.expected.glsl
@@ -1,7 +1,11 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
+
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? (-2147483647 - 1) : int(v)) : 2147483647);
+}
 
 uniform highp samplerCubeArray x_20_x_10;
 
@@ -19,7 +23,7 @@
   vec2 vf12 = vec2(1.0f, 2.0f);
   vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
   vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  vec4 x_73 = texture(x_20_x_10, vec4(vf1234.xyz, float(int(round(vf1234.w)))));
+  vec4 x_73 = texture(x_20_x_10, vec4(vf1234.xyz, float(tint_ftoi(round(vf1234.w)))));
   uint x_1000 = 0u;
   return;
 }
@@ -33,8 +37,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:8: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
index 0e04171..5477a47 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
index 213d7c4..e9115be 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
index 54ae2f0..82c2003 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_2.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler3D x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index d3ba8e3..9f6c4bd 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl
index 87f55dd..587187c 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_4.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
index 0e04171..5477a47 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
index 213d7c4..e9115be 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_6.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DArray x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
index d3ba8e3..9f6c4bd 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_7.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCube x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
index 87f55dd..587187c 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_8.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
index 87eaf6f..c3ffbf9 100644
--- a/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQueryLevels_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
index 394a766..604a494 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySamples_SignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
index 2cd7703..a2d9890 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySamples_UnsignedResult_SpvParserHandleTest_SampledImageAccessTest_Variable_0.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
index 8fef0c3..ca00397 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_1.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray x_20_1;
 void main_1() {
@@ -10,7 +10,6 @@
   vec2 vf21 = vec2(2.0f, 1.0f);
   vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
   vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
   ivec2 vi12 = ivec2(1, 2);
   ivec3 vi123 = ivec3(1, 2, 3);
   ivec4 vi1234 = ivec4(1, 2, 3, 4);
@@ -22,7 +21,7 @@
   vec2 coords12 = vf12;
   vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, i1).xy).xy, uint(textureSize(x_20_1, 0).z)));
+  ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, 1).xy).xy, uint(textureSize(x_20_1, 0).z)));
   return;
 }
 
diff --git a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 8fef0c3..ca00397 100644
--- a/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageQuerySizeLod_Arrayed_SignedResult_SignedLevel_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp samplerCubeArray x_20_1;
 void main_1() {
@@ -10,7 +10,6 @@
   vec2 vf21 = vec2(2.0f, 1.0f);
   vec3 vf123 = vec3(1.0f, 2.0f, 3.0f);
   vec4 vf1234 = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-  int i1 = 1;
   ivec2 vi12 = ivec2(1, 2);
   ivec3 vi123 = ivec3(1, 2, 3);
   ivec4 vi1234 = ivec4(1, 2, 3, 4);
@@ -22,7 +21,7 @@
   vec2 coords12 = vf12;
   vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, i1).xy).xy, uint(textureSize(x_20_1, 0).z)));
+  ivec3 x_99 = ivec3(uvec3(uvec2(textureSize(x_20_1, 1).xy).xy, uint(textureSize(x_20_1, 0).z)));
   return;
 }
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 25aaca0..cec2bad 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -1,7 +1,11 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
+
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? (-2147483647 - 1) : int(v)) : 2147483647);
+}
 
 uniform highp sampler2DArrayShadow x_20_x_10;
 
@@ -21,9 +25,8 @@
   uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
   float coords1 = 1.0f;
   vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vec4(vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f), ivec2(3, 4));
+  float x_79 = textureOffset(x_20_x_10, vec4(vec3(vf123.xy, float(tint_ftoi(round(vf123.z)))), 0.20000000298023223877f), ivec2(3, 4));
   return;
 }
 
@@ -36,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:24: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:24: '' : compilation terminated 
+ERROR: 0:27: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:27: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
index 702ca99..cec7024 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefExplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -1,7 +1,11 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
+
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? (-2147483647 - 1) : int(v)) : 2147483647);
+}
 
 uniform highp samplerCubeArrayShadow x_20_x_10;
 
@@ -22,8 +26,7 @@
   float coords1 = 1.0f;
   vec2 coords12 = vf12;
   vec3 coords123 = vf123;
-  vec4 coords1234 = vf1234;
-  float x_79 = texture(x_20_x_10, vec4(coords1234.xyz, float(int(round(coords1234.w)))), 0.200000003f);
+  float x_79 = texture(x_20_x_10, vec4(vf1234.xyz, float(tint_ftoi(round(vf1234.w)))), 0.20000000298023223877f);
   return;
 }
 
@@ -36,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:8: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
index 25aaca0..cec2bad 100644
--- a/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageSampleDrefImplicitLod_SpvParserHandleTest_SampledImageAccessTest_Variable_3.spvasm.expected.glsl
@@ -1,7 +1,11 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
+
+int tint_ftoi(float v) {
+  return ((v < 2147483520.0f) ? ((v < -2147483648.0f) ? (-2147483647 - 1) : int(v)) : 2147483647);
+}
 
 uniform highp sampler2DArrayShadow x_20_x_10;
 
@@ -21,9 +25,8 @@
   uvec4 vu1234 = uvec4(1u, 2u, 3u, 4u);
   float coords1 = 1.0f;
   vec2 coords12 = vf12;
-  vec3 coords123 = vf123;
   vec4 coords1234 = vf1234;
-  float x_79 = textureOffset(x_20_x_10, vec4(vec3(coords123.xy, float(int(round(coords123.z)))), 0.200000003f), ivec2(3, 4));
+  float x_79 = textureOffset(x_20_x_10, vec4(vec3(vf123.xy, float(tint_ftoi(round(vf123.z)))), 0.20000000298023223877f), ivec2(3, 4));
   return;
 }
 
@@ -36,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:24: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:24: '' : compilation terminated 
+ERROR: 0:27: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:27: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl
index 766d374..39bfa22 100644
--- a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_4.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D x_20;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl
index 3b7b04a..54058f9 100644
--- a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_5.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D x_20;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl
index 66e03a1..f86ec00 100644
--- a/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/ImageWrite_ConvertTexelOperand_Arity_SpvParserHandleTest_ImageAccessTest_Variable_6.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D x_20;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.glsl
index ff38dd5..21858ff 100644
--- a/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Multisampled_Only2DNonArrayedIsValid_SpvParserHandleTest_ImageDeclTest_DeclareAndUseHandle_2.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
index 4a46c20..dbc4b3b 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_1.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 layout(rg32f) uniform highp writeonly image2D x_20;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.glsl
index 44f2f43..45467be 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_5.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2D x_20_1;
 void main_1() {
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.glsl
index fa0ffd2..8020ff5 100644
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.glsl
+++ b/test/tint/unittest/reader/spirv/Samples_SpvParserHandleTest_RegisterHandleUsage_RawImage_Variable_6.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
+precision highp float;
 
 uniform highp sampler2DMS x_20_1;
 void main_1() {