PromoteSideEffectsToDecl: add to 4 backends and regen tests

Added to hlsl, msl, glsl, and spirv backends.

Bug: tint:1300
Change-Id: I06062bd8e4b32acbc4a8670b060a7a22bc1ae034
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/80600
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/tint/transform/glsl.cc b/src/tint/transform/glsl.cc
index 5a9b4d3..39f81e6 100644
--- a/src/tint/transform/glsl.cc
+++ b/src/tint/transform/glsl.cc
@@ -29,6 +29,7 @@
 #include "src/tint/transform/manager.h"
 #include "src/tint/transform/pad_array_elements.h"
 #include "src/tint/transform/promote_initializers_to_const_var.h"
+#include "src/tint/transform/promote_side_effects_to_decl.h"
 #include "src/tint/transform/remove_phonies.h"
 #include "src/tint/transform/renamer.h"
 #include "src/tint/transform/simplify_pointers.h"
@@ -83,6 +84,7 @@
     manager.Add<ZeroInitWorkgroupMemory>();
   }
   manager.Add<CanonicalizeEntryPointIO>();
+  manager.Add<PromoteSideEffectsToDecl>();
   manager.Add<SimplifyPointers>();
 
   manager.Add<RemovePhonies>();
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index 900ff24..cf0a320 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -59,6 +59,7 @@
 #include "src/tint/transform/num_workgroups_from_uniform.h"
 #include "src/tint/transform/pad_array_elements.h"
 #include "src/tint/transform/promote_initializers_to_const_var.h"
+#include "src/tint/transform/promote_side_effects_to_decl.h"
 #include "src/tint/transform/remove_phonies.h"
 #include "src/tint/transform/simplify_pointers.h"
 #include "src/tint/transform/unshadow.h"
@@ -186,6 +187,7 @@
   // assumes that num_workgroups builtins only appear as struct members and are
   // only accessed directly via member accessors.
   manager.Add<transform::NumWorkgroupsFromUniform>();
+  manager.Add<transform::PromoteSideEffectsToDecl>();
   manager.Add<transform::SimplifyPointers>();
   manager.Add<transform::RemovePhonies>();
   // ArrayLengthFromUniform must come after InlinePointerLets and Simplify, as
diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc
index fccc3eb..89164d1 100644
--- a/src/tint/writer/msl/generator_impl.cc
+++ b/src/tint/writer/msl/generator_impl.cc
@@ -65,6 +65,7 @@
 #include "src/tint/transform/module_scope_var_to_entry_point_param.h"
 #include "src/tint/transform/pad_array_elements.h"
 #include "src/tint/transform/promote_initializers_to_const_var.h"
+#include "src/tint/transform/promote_side_effects_to_decl.h"
 #include "src/tint/transform/remove_phonies.h"
 #include "src/tint/transform/simplify_pointers.h"
 #include "src/tint/transform/unshadow.h"
@@ -173,6 +174,7 @@
     manager.Add<transform::ZeroInitWorkgroupMemory>();
   }
   manager.Add<transform::CanonicalizeEntryPointIO>();
+  manager.Add<transform::PromoteSideEffectsToDecl>();
   manager.Add<transform::PromoteInitializersToConstVar>();
 
   manager.Add<transform::VectorizeScalarMatrixConstructors>();
diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc
index 8af54bc..3b3bdb7 100644
--- a/src/tint/writer/spirv/builder.cc
+++ b/src/tint/writer/spirv/builder.cc
@@ -48,6 +48,7 @@
 #include "src/tint/transform/fold_constants.h"
 #include "src/tint/transform/for_loop_to_loop.h"
 #include "src/tint/transform/manager.h"
+#include "src/tint/transform/promote_side_effects_to_decl.h"
 #include "src/tint/transform/remove_unreachable_statements.h"
 #include "src/tint/transform/simplify_pointers.h"
 #include "src/tint/transform/unshadow.h"
@@ -276,6 +277,7 @@
     manager.Add<transform::ZeroInitWorkgroupMemory>();
   }
   manager.Add<transform::RemoveUnreachableStatements>();
+  manager.Add<transform::PromoteSideEffectsToDecl>();
   manager.Add<transform::SimplifyPointers>();  // Required for arrayLength()
   manager.Add<transform::FoldConstants>();
   manager.Add<transform::VectorizeScalarMatrixConstructors>();
diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.glsl b/test/tint/array/assign_to_function_var.wgsl.expected.glsl
index 70cfb8d..1440eef 100644
--- a/test/tint/array/assign_to_function_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.glsl
@@ -18,20 +18,20 @@
   ivec4 arr[4];
 } src_storage;
 ivec4[4] ret_arr() {
-  ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  return tint_symbol;
+  ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
+  return tint_symbol_1;
 }
 
 S ret_struct_arr() {
-  S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
-  return tint_symbol_1;
+  S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
+  return tint_symbol_2;
 }
 
 void foo(ivec4 src_param[4]) {
   ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
   ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
-  dst = tint_symbol_2;
+  ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
+  dst = tint_symbol_3;
   dst = src_param;
   dst = ret_arr();
   ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -39,7 +39,8 @@
   dst = src_function;
   dst = src_private;
   dst = src_workgroup;
-  dst = ret_struct_arr().arr;
+  S tint_symbol = ret_struct_arr();
+  dst = tint_symbol.arr;
   dst = src_uniform.arr;
   dst = src_storage.arr;
   int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.hlsl b/test/tint/array/assign_to_function_var.wgsl.expected.hlsl
index eda01ad..caa64fd 100644
--- a/test/tint/array/assign_to_function_var.wgsl.expected.hlsl
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.hlsl
@@ -16,17 +16,17 @@
 
 typedef int4 ret_arr_ret[4];
 ret_arr_ret ret_arr() {
-  const int4 tint_symbol_5[4] = (int4[4])0;
-  return tint_symbol_5;
-}
-
-S ret_struct_arr() {
-  const S tint_symbol_6 = (S)0;
+  const int4 tint_symbol_6[4] = (int4[4])0;
   return tint_symbol_6;
 }
 
-typedef int4 tint_symbol_1_ret[4];
-tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
+S ret_struct_arr() {
+  const S tint_symbol_7 = (S)0;
+  return tint_symbol_7;
+}
+
+typedef int4 tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   int4 arr_1[4] = (int4[4])0;
   {
     [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@@ -37,8 +37,8 @@
   return arr_1;
 }
 
-typedef int4 tint_symbol_3_ret[4];
-tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
+typedef int4 tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
   int4 arr_2[4] = (int4[4])0;
   {
     [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@@ -51,8 +51,8 @@
 void foo(int4 src_param[4]) {
   int4 src_function[4] = (int4[4])0;
   int4 tint_symbol[4] = (int4[4])0;
-  const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
-  tint_symbol = tint_symbol_7;
+  const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
+  tint_symbol = tint_symbol_8;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
   const int4 src_let[4] = (int4[4])0;
@@ -60,9 +60,10 @@
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
-  tint_symbol = ret_struct_arr().arr;
-  tint_symbol = tint_symbol_1(src_uniform, 0u);
-  tint_symbol = tint_symbol_3(src_storage, 0u);
+  const S tint_symbol_1 = ret_struct_arr();
+  tint_symbol = tint_symbol_1.arr;
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   int dst_nested[4][3][2] = (int[4][3][2])0;
   int src_nested[4][3][2] = (int[4][3][2])0;
   dst_nested = src_nested;
diff --git a/test/tint/array/assign_to_function_var.wgsl.expected.msl b/test/tint/array/assign_to_function_var.wgsl.expected.msl
index 9d12733..39cf432 100644
--- a/test/tint/array/assign_to_function_var.wgsl.expected.msl
+++ b/test/tint/array/assign_to_function_var.wgsl.expected.msl
@@ -10,13 +10,13 @@
 };
 
 tint_array_wrapper ret_arr() {
-  tint_array_wrapper const tint_symbol = {.arr={}};
-  return tint_symbol;
+  tint_array_wrapper const tint_symbol_1 = {.arr={}};
+  return tint_symbol_1;
 }
 
 S ret_struct_arr() {
-  S const tint_symbol_1 = {};
-  return tint_symbol_1;
+  S const tint_symbol_2 = {};
+  return tint_symbol_2;
 }
 
 struct tint_array_wrapper_3 {
@@ -31,21 +31,22 @@
   tint_array_wrapper_2 arr[4];
 };
 
-void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, threadgroup tint_array_wrapper* const tint_symbol_4, const constant S* const tint_symbol_5, device S* const tint_symbol_6) {
+void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7) {
   tint_array_wrapper src_function = {};
   tint_array_wrapper dst = {};
-  tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
-  dst = tint_symbol_2;
+  tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
+  dst = tint_symbol_3;
   dst = src_param;
   dst = ret_arr();
   tint_array_wrapper const src_let = {.arr={}};
   dst = src_let;
   dst = src_function;
-  dst = *(tint_symbol_3);
   dst = *(tint_symbol_4);
-  dst = ret_struct_arr().arr;
-  dst = (*(tint_symbol_5)).arr;
+  dst = *(tint_symbol_5);
+  S const tint_symbol = ret_struct_arr();
+  dst = tint_symbol.arr;
   dst = (*(tint_symbol_6)).arr;
+  dst = (*(tint_symbol_7)).arr;
   tint_array_wrapper_1 dst_nested = {};
   tint_array_wrapper_1 src_nested = {};
   dst_nested = src_nested;
diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.glsl b/test/tint/array/assign_to_private_var.wgsl.expected.glsl
index 4911005..7c59609 100644
--- a/test/tint/array/assign_to_private_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.glsl
@@ -20,19 +20,19 @@
 ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
 int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
 ivec4[4] ret_arr() {
-  ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  return tint_symbol;
+  ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
+  return tint_symbol_1;
 }
 
 S ret_struct_arr() {
-  S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
-  return tint_symbol_1;
+  S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
+  return tint_symbol_2;
 }
 
 void foo(ivec4 src_param[4]) {
   ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
-  dst = tint_symbol_2;
+  ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
+  dst = tint_symbol_3;
   dst = src_param;
   dst = ret_arr();
   ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -40,7 +40,8 @@
   dst = src_function;
   dst = src_private;
   dst = src_workgroup;
-  dst = ret_struct_arr().arr;
+  S tint_symbol = ret_struct_arr();
+  dst = tint_symbol.arr;
   dst = src_uniform.arr;
   dst = src_storage.arr;
   int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.hlsl b/test/tint/array/assign_to_private_var.wgsl.expected.hlsl
index ddb084e..38b1759 100644
--- a/test/tint/array/assign_to_private_var.wgsl.expected.hlsl
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.hlsl
@@ -18,17 +18,17 @@
 
 typedef int4 ret_arr_ret[4];
 ret_arr_ret ret_arr() {
-  const int4 tint_symbol_5[4] = (int4[4])0;
-  return tint_symbol_5;
-}
-
-S ret_struct_arr() {
-  const S tint_symbol_6 = (S)0;
+  const int4 tint_symbol_6[4] = (int4[4])0;
   return tint_symbol_6;
 }
 
-typedef int4 tint_symbol_1_ret[4];
-tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
+S ret_struct_arr() {
+  const S tint_symbol_7 = (S)0;
+  return tint_symbol_7;
+}
+
+typedef int4 tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   int4 arr_1[4] = (int4[4])0;
   {
     [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@@ -39,8 +39,8 @@
   return arr_1;
 }
 
-typedef int4 tint_symbol_3_ret[4];
-tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
+typedef int4 tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
   int4 arr_2[4] = (int4[4])0;
   {
     [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@@ -52,8 +52,8 @@
 
 void foo(int4 src_param[4]) {
   int4 src_function[4] = (int4[4])0;
-  const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
-  tint_symbol = tint_symbol_7;
+  const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
+  tint_symbol = tint_symbol_8;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
   const int4 src_let[4] = (int4[4])0;
@@ -61,9 +61,10 @@
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
-  tint_symbol = ret_struct_arr().arr;
-  tint_symbol = tint_symbol_1(src_uniform, 0u);
-  tint_symbol = tint_symbol_3(src_storage, 0u);
+  const S tint_symbol_1 = ret_struct_arr();
+  tint_symbol = tint_symbol_1.arr;
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   int src_nested[4][3][2] = (int[4][3][2])0;
   dst_nested = src_nested;
 }
diff --git a/test/tint/array/assign_to_private_var.wgsl.expected.msl b/test/tint/array/assign_to_private_var.wgsl.expected.msl
index d5127b1..be8972f 100644
--- a/test/tint/array/assign_to_private_var.wgsl.expected.msl
+++ b/test/tint/array/assign_to_private_var.wgsl.expected.msl
@@ -22,30 +22,31 @@
 };
 
 tint_array_wrapper ret_arr() {
-  tint_array_wrapper const tint_symbol = {.arr={}};
-  return tint_symbol;
-}
-
-S ret_struct_arr() {
-  S const tint_symbol_1 = {};
+  tint_array_wrapper const tint_symbol_1 = {.arr={}};
   return tint_symbol_1;
 }
 
-void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, thread tint_array_wrapper_1* const tint_symbol_8) {
+S ret_struct_arr() {
+  S const tint_symbol_2 = {};
+  return tint_symbol_2;
+}
+
+void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_4, thread tint_array_wrapper* const tint_symbol_5, threadgroup tint_array_wrapper* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, thread tint_array_wrapper_1* const tint_symbol_9) {
   tint_array_wrapper src_function = {};
-  tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
-  *(tint_symbol_3) = tint_symbol_2;
-  *(tint_symbol_3) = src_param;
-  *(tint_symbol_3) = ret_arr();
+  tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
+  *(tint_symbol_4) = tint_symbol_3;
+  *(tint_symbol_4) = src_param;
+  *(tint_symbol_4) = ret_arr();
   tint_array_wrapper const src_let = {.arr={}};
-  *(tint_symbol_3) = src_let;
-  *(tint_symbol_3) = src_function;
-  *(tint_symbol_3) = *(tint_symbol_4);
-  *(tint_symbol_3) = *(tint_symbol_5);
-  *(tint_symbol_3) = ret_struct_arr().arr;
-  *(tint_symbol_3) = (*(tint_symbol_6)).arr;
-  *(tint_symbol_3) = (*(tint_symbol_7)).arr;
+  *(tint_symbol_4) = src_let;
+  *(tint_symbol_4) = src_function;
+  *(tint_symbol_4) = *(tint_symbol_5);
+  *(tint_symbol_4) = *(tint_symbol_6);
+  S const tint_symbol = ret_struct_arr();
+  *(tint_symbol_4) = tint_symbol.arr;
+  *(tint_symbol_4) = (*(tint_symbol_7)).arr;
+  *(tint_symbol_4) = (*(tint_symbol_8)).arr;
   tint_array_wrapper_1 src_nested = {};
-  *(tint_symbol_8) = src_nested;
+  *(tint_symbol_9) = src_nested;
 }
 
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.glsl b/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
index 60a16bb..33c0123 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.glsl
@@ -28,27 +28,29 @@
   int arr[4][3][2];
 } dst_nested;
 ivec4[4] ret_arr() {
-  ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  return tint_symbol;
+  ivec4 tint_symbol_2[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
+  return tint_symbol_2;
 }
 
 S ret_struct_arr() {
-  S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
-  return tint_symbol_1;
+  S tint_symbol_3 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
+  return tint_symbol_3;
 }
 
 void foo(ivec4 src_param[4]) {
   ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
-  dst.arr = tint_symbol_2;
+  ivec4 tint_symbol_4[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
+  dst.arr = tint_symbol_4;
   dst.arr = src_param;
-  dst.arr = ret_arr();
+  ivec4 tint_symbol[4] = ret_arr();
+  dst.arr = tint_symbol;
   ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
   dst.arr = src_let;
   dst.arr = src_function;
   dst.arr = src_private;
   dst.arr = src_workgroup;
-  dst.arr = ret_struct_arr().arr;
+  S tint_symbol_1 = ret_struct_arr();
+  dst.arr = tint_symbol_1.arr;
   dst.arr = src_uniform.arr;
   dst.arr = src_storage.arr;
   int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.hlsl b/test/tint/array/assign_to_storage_var.wgsl.expected.hlsl
index c940b98..fa5b2d8 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.hlsl
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.hlsl
@@ -18,16 +18,16 @@
 
 typedef int4 ret_arr_ret[4];
 ret_arr_ret ret_arr() {
-  const int4 tint_symbol_11[4] = (int4[4])0;
-  return tint_symbol_11;
+  const int4 tint_symbol_13[4] = (int4[4])0;
+  return tint_symbol_13;
 }
 
 S ret_struct_arr() {
-  const S tint_symbol_12 = (S)0;
-  return tint_symbol_12;
+  const S tint_symbol_14 = (S)0;
+  return tint_symbol_14;
 }
 
-void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
+void tint_symbol_3(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
   int4 array[4] = value;
   {
     [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@@ -36,8 +36,8 @@
   }
 }
 
-typedef int4 tint_symbol_3_ret[4];
-tint_symbol_3_ret tint_symbol_3(uint4 buffer[4], uint offset) {
+typedef int4 tint_symbol_5_ret[4];
+tint_symbol_5_ret tint_symbol_5(uint4 buffer[4], uint offset) {
   int4 arr_1[4] = (int4[4])0;
   {
     [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@@ -48,8 +48,8 @@
   return arr_1;
 }
 
-typedef int4 tint_symbol_5_ret[4];
-tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) {
+typedef int4 tint_symbol_7_ret[4];
+tint_symbol_7_ret tint_symbol_7(RWByteAddressBuffer buffer, uint offset) {
   int4 arr_2[4] = (int4[4])0;
   {
     [loop] for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) {
@@ -59,7 +59,7 @@
   return arr_2;
 }
 
-void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) {
+void tint_symbol_11(RWByteAddressBuffer buffer, uint offset, int value[2]) {
   int array_3[2] = value;
   {
     [loop] for(uint i_3 = 0u; (i_3 < 2u); i_3 = (i_3 + 1u)) {
@@ -68,38 +68,40 @@
   }
 }
 
-void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
+void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
   int array_2[3][2] = value;
   {
     [loop] for(uint i_4 = 0u; (i_4 < 3u); i_4 = (i_4 + 1u)) {
-      tint_symbol_9(buffer, (offset + (i_4 * 8u)), array_2[i_4]);
+      tint_symbol_11(buffer, (offset + (i_4 * 8u)), array_2[i_4]);
     }
   }
 }
 
-void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
+void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
   int array_1[4][3][2] = value;
   {
     [loop] for(uint i_5 = 0u; (i_5 < 4u); i_5 = (i_5 + 1u)) {
-      tint_symbol_8(buffer, (offset + (i_5 * 24u)), array_1[i_5]);
+      tint_symbol_10(buffer, (offset + (i_5 * 24u)), array_1[i_5]);
     }
   }
 }
 
 void foo(int4 src_param[4]) {
   int4 src_function[4] = (int4[4])0;
-  const int4 tint_symbol_13[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
-  tint_symbol_1(tint_symbol, 0u, tint_symbol_13);
-  tint_symbol_1(tint_symbol, 0u, src_param);
-  tint_symbol_1(tint_symbol, 0u, ret_arr());
+  const int4 tint_symbol_15[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
+  tint_symbol_3(tint_symbol, 0u, tint_symbol_15);
+  tint_symbol_3(tint_symbol, 0u, src_param);
+  const int4 tint_symbol_1[4] = ret_arr();
+  tint_symbol_3(tint_symbol, 0u, tint_symbol_1);
   const int4 src_let[4] = (int4[4])0;
-  tint_symbol_1(tint_symbol, 0u, src_let);
-  tint_symbol_1(tint_symbol, 0u, src_function);
-  tint_symbol_1(tint_symbol, 0u, src_private);
-  tint_symbol_1(tint_symbol, 0u, src_workgroup);
-  tint_symbol_1(tint_symbol, 0u, ret_struct_arr().arr);
-  tint_symbol_1(tint_symbol, 0u, tint_symbol_3(src_uniform, 0u));
-  tint_symbol_1(tint_symbol, 0u, tint_symbol_5(src_storage, 0u));
+  tint_symbol_3(tint_symbol, 0u, src_let);
+  tint_symbol_3(tint_symbol, 0u, src_function);
+  tint_symbol_3(tint_symbol, 0u, src_private);
+  tint_symbol_3(tint_symbol, 0u, src_workgroup);
+  const S tint_symbol_2 = ret_struct_arr();
+  tint_symbol_3(tint_symbol, 0u, tint_symbol_2.arr);
+  tint_symbol_3(tint_symbol, 0u, tint_symbol_5(src_uniform, 0u));
+  tint_symbol_3(tint_symbol, 0u, tint_symbol_7(src_storage, 0u));
   int src_nested[4][3][2] = (int[4][3][2])0;
-  tint_symbol_7(dst_nested, 0u, src_nested);
+  tint_symbol_9(dst_nested, 0u, src_nested);
 }
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.msl b/test/tint/array/assign_to_storage_var.wgsl.expected.msl
index b4ba58a..3bf3ccb 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.msl
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.msl
@@ -26,30 +26,32 @@
 };
 
 tint_array_wrapper ret_arr() {
-  tint_array_wrapper const tint_symbol = {.arr={}};
-  return tint_symbol;
+  tint_array_wrapper const tint_symbol_2 = {.arr={}};
+  return tint_symbol_2;
 }
 
 S ret_struct_arr() {
-  S const tint_symbol_1 = {};
-  return tint_symbol_1;
+  S const tint_symbol_3 = {};
+  return tint_symbol_3;
 }
 
-void foo(tint_array_wrapper src_param, device S* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, device S_nested* const tint_symbol_8) {
+void foo(tint_array_wrapper src_param, device S* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, threadgroup tint_array_wrapper* const tint_symbol_7, const constant S* const tint_symbol_8, device S* const tint_symbol_9, device S_nested* const tint_symbol_10) {
   tint_array_wrapper src_function = {};
-  tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
-  (*(tint_symbol_3)).arr = tint_symbol_2;
-  (*(tint_symbol_3)).arr = src_param;
-  (*(tint_symbol_3)).arr = ret_arr();
+  tint_array_wrapper const tint_symbol_4 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
+  (*(tint_symbol_5)).arr = tint_symbol_4;
+  (*(tint_symbol_5)).arr = src_param;
+  tint_array_wrapper const tint_symbol = ret_arr();
+  (*(tint_symbol_5)).arr = tint_symbol;
   tint_array_wrapper const src_let = {.arr={}};
-  (*(tint_symbol_3)).arr = src_let;
-  (*(tint_symbol_3)).arr = src_function;
-  (*(tint_symbol_3)).arr = *(tint_symbol_4);
-  (*(tint_symbol_3)).arr = *(tint_symbol_5);
-  (*(tint_symbol_3)).arr = ret_struct_arr().arr;
-  (*(tint_symbol_3)).arr = (*(tint_symbol_6)).arr;
-  (*(tint_symbol_3)).arr = (*(tint_symbol_7)).arr;
+  (*(tint_symbol_5)).arr = src_let;
+  (*(tint_symbol_5)).arr = src_function;
+  (*(tint_symbol_5)).arr = *(tint_symbol_6);
+  (*(tint_symbol_5)).arr = *(tint_symbol_7);
+  S const tint_symbol_1 = ret_struct_arr();
+  (*(tint_symbol_5)).arr = tint_symbol_1.arr;
+  (*(tint_symbol_5)).arr = (*(tint_symbol_8)).arr;
+  (*(tint_symbol_5)).arr = (*(tint_symbol_9)).arr;
   tint_array_wrapper_1 src_nested = {};
-  (*(tint_symbol_8)).arr = src_nested;
+  (*(tint_symbol_10)).arr = src_nested;
 }
 
diff --git a/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm b/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm
index e4da62a..f33dfbe 100644
--- a/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm
+++ b/test/tint/array/assign_to_storage_var.wgsl.expected.spvasm
@@ -106,9 +106,9 @@
                OpStore %44 %51
          %52 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
                OpStore %52 %src_param
-         %53 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
-         %54 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr
-               OpStore %53 %54
+         %53 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr
+         %54 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
+               OpStore %54 %53
          %55 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
                OpStore %55 %8
          %56 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
@@ -120,10 +120,10 @@
          %60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
          %61 = OpLoad %_arr_v4int_uint_4 %src_workgroup
                OpStore %60 %61
-         %62 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
-         %63 = OpFunctionCall %S %ret_struct_arr
-         %64 = OpCompositeExtract %_arr_v4int_uint_4 %63 0
-               OpStore %62 %64
+         %62 = OpFunctionCall %S %ret_struct_arr
+         %63 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
+         %64 = OpCompositeExtract %_arr_v4int_uint_4 %62 0
+               OpStore %63 %64
          %65 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
          %67 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0
          %68 = OpLoad %_arr_v4int_uint_4 %67
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
index a4a0b8b..9c78086 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.glsl
@@ -20,19 +20,19 @@
 shared ivec4 dst[4];
 shared int dst_nested[4][3][2];
 ivec4[4] ret_arr() {
-  ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  return tint_symbol;
+  ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
+  return tint_symbol_1;
 }
 
 S ret_struct_arr() {
-  S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
-  return tint_symbol_1;
+  S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
+  return tint_symbol_2;
 }
 
 void foo(ivec4 src_param[4]) {
   ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
-  ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
-  dst = tint_symbol_2;
+  ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
+  dst = tint_symbol_3;
   dst = src_param;
   dst = ret_arr();
   ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -40,7 +40,8 @@
   dst = src_function;
   dst = src_private;
   dst = src_workgroup;
-  dst = ret_struct_arr().arr;
+  S tint_symbol = ret_struct_arr();
+  dst = tint_symbol.arr;
   dst = src_uniform.arr;
   dst = src_storage.arr;
   int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.hlsl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.hlsl
index 4243ec1..82bac27 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.hlsl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.hlsl
@@ -18,17 +18,17 @@
 
 typedef int4 ret_arr_ret[4];
 ret_arr_ret ret_arr() {
-  const int4 tint_symbol_5[4] = (int4[4])0;
-  return tint_symbol_5;
-}
-
-S ret_struct_arr() {
-  const S tint_symbol_6 = (S)0;
+  const int4 tint_symbol_6[4] = (int4[4])0;
   return tint_symbol_6;
 }
 
-typedef int4 tint_symbol_1_ret[4];
-tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
+S ret_struct_arr() {
+  const S tint_symbol_7 = (S)0;
+  return tint_symbol_7;
+}
+
+typedef int4 tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   int4 arr_1[4] = (int4[4])0;
   {
     [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@@ -39,8 +39,8 @@
   return arr_1;
 }
 
-typedef int4 tint_symbol_3_ret[4];
-tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
+typedef int4 tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
   int4 arr_2[4] = (int4[4])0;
   {
     [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@@ -52,8 +52,8 @@
 
 void foo(int4 src_param[4]) {
   int4 src_function[4] = (int4[4])0;
-  const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
-  tint_symbol = tint_symbol_7;
+  const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
+  tint_symbol = tint_symbol_8;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
   const int4 src_let[4] = (int4[4])0;
@@ -61,9 +61,10 @@
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
-  tint_symbol = ret_struct_arr().arr;
-  tint_symbol = tint_symbol_1(src_uniform, 0u);
-  tint_symbol = tint_symbol_3(src_storage, 0u);
+  const S tint_symbol_1 = ret_struct_arr();
+  tint_symbol = tint_symbol_1.arr;
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   int src_nested[4][3][2] = (int[4][3][2])0;
   dst_nested = src_nested;
 }
diff --git a/test/tint/array/assign_to_workgroup_var.wgsl.expected.msl b/test/tint/array/assign_to_workgroup_var.wgsl.expected.msl
index 32b8290..9fab331 100644
--- a/test/tint/array/assign_to_workgroup_var.wgsl.expected.msl
+++ b/test/tint/array/assign_to_workgroup_var.wgsl.expected.msl
@@ -22,30 +22,31 @@
 };
 
 tint_array_wrapper ret_arr() {
-  tint_array_wrapper const tint_symbol = {.arr={}};
-  return tint_symbol;
-}
-
-S ret_struct_arr() {
-  S const tint_symbol_1 = {};
+  tint_array_wrapper const tint_symbol_1 = {.arr={}};
   return tint_symbol_1;
 }
 
-void foo(tint_array_wrapper src_param, threadgroup tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, threadgroup tint_array_wrapper_1* const tint_symbol_8) {
+S ret_struct_arr() {
+  S const tint_symbol_2 = {};
+  return tint_symbol_2;
+}
+
+void foo(tint_array_wrapper src_param, threadgroup tint_array_wrapper* const tint_symbol_4, thread tint_array_wrapper* const tint_symbol_5, threadgroup tint_array_wrapper* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, threadgroup tint_array_wrapper_1* const tint_symbol_9) {
   tint_array_wrapper src_function = {};
-  tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
-  *(tint_symbol_3) = tint_symbol_2;
-  *(tint_symbol_3) = src_param;
-  *(tint_symbol_3) = ret_arr();
+  tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
+  *(tint_symbol_4) = tint_symbol_3;
+  *(tint_symbol_4) = src_param;
+  *(tint_symbol_4) = ret_arr();
   tint_array_wrapper const src_let = {.arr={}};
-  *(tint_symbol_3) = src_let;
-  *(tint_symbol_3) = src_function;
-  *(tint_symbol_3) = *(tint_symbol_4);
-  *(tint_symbol_3) = *(tint_symbol_5);
-  *(tint_symbol_3) = ret_struct_arr().arr;
-  *(tint_symbol_3) = (*(tint_symbol_6)).arr;
-  *(tint_symbol_3) = (*(tint_symbol_7)).arr;
+  *(tint_symbol_4) = src_let;
+  *(tint_symbol_4) = src_function;
+  *(tint_symbol_4) = *(tint_symbol_5);
+  *(tint_symbol_4) = *(tint_symbol_6);
+  S const tint_symbol = ret_struct_arr();
+  *(tint_symbol_4) = tint_symbol.arr;
+  *(tint_symbol_4) = (*(tint_symbol_7)).arr;
+  *(tint_symbol_4) = (*(tint_symbol_8)).arr;
   tint_array_wrapper_1 src_nested = {};
-  *(tint_symbol_8) = src_nested;
+  *(tint_symbol_9) = src_nested;
 }
 
diff --git a/test/tint/array/function_return_type.wgsl.expected.glsl b/test/tint/array/function_return_type.wgsl.expected.glsl
index 465ae8f..497ca18 100644
--- a/test/tint/array/function_return_type.wgsl.expected.glsl
+++ b/test/tint/array/function_return_type.wgsl.expected.glsl
@@ -1,18 +1,23 @@
 #version 310 es
 
 float[4] f1() {
-  float tint_symbol_1[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
-  return tint_symbol_1;
+  float tint_symbol_6[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
+  return tint_symbol_6;
 }
 
 float[3][4] f2() {
-  float tint_symbol_2[3][4] = float[3][4](f1(), f1(), f1());
-  return tint_symbol_2;
+  float tint_symbol_1[4] = f1();
+  float tint_symbol_2[4] = f1();
+  float tint_symbol_3[4] = f1();
+  float tint_symbol_7[3][4] = float[3][4](tint_symbol_1, tint_symbol_2, tint_symbol_3);
+  return tint_symbol_7;
 }
 
 float[2][3][4] f3() {
-  float tint_symbol_3[2][3][4] = float[2][3][4](f2(), f2());
-  return tint_symbol_3;
+  float tint_symbol_4[3][4] = f2();
+  float tint_symbol_5[3][4] = f2();
+  float tint_symbol_8[2][3][4] = float[2][3][4](tint_symbol_4, tint_symbol_5);
+  return tint_symbol_8;
 }
 
 void tint_symbol() {
diff --git a/test/tint/array/function_return_type.wgsl.expected.hlsl b/test/tint/array/function_return_type.wgsl.expected.hlsl
index 8ec30b6..954b060 100644
--- a/test/tint/array/function_return_type.wgsl.expected.hlsl
+++ b/test/tint/array/function_return_type.wgsl.expected.hlsl
@@ -1,19 +1,24 @@
 typedef float f1_ret[4];
 f1_ret f1() {
-  const float tint_symbol[4] = (float[4])0;
-  return tint_symbol;
+  const float tint_symbol_5[4] = (float[4])0;
+  return tint_symbol_5;
 }
 
 typedef float f2_ret[3][4];
 f2_ret f2() {
-  const float tint_symbol_1[3][4] = {f1(), f1(), f1()};
-  return tint_symbol_1;
+  const float tint_symbol[4] = f1();
+  const float tint_symbol_1[4] = f1();
+  const float tint_symbol_2[4] = f1();
+  const float tint_symbol_6[3][4] = {tint_symbol, tint_symbol_1, tint_symbol_2};
+  return tint_symbol_6;
 }
 
 typedef float f3_ret[2][3][4];
 f3_ret f3() {
-  const float tint_symbol_2[2][3][4] = {f2(), f2()};
-  return tint_symbol_2;
+  const float tint_symbol_3[3][4] = f2();
+  const float tint_symbol_4[3][4] = f2();
+  const float tint_symbol_7[2][3][4] = {tint_symbol_3, tint_symbol_4};
+  return tint_symbol_7;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/array/function_return_type.wgsl.expected.msl b/test/tint/array/function_return_type.wgsl.expected.msl
index b56fe6c..8d7634a 100644
--- a/test/tint/array/function_return_type.wgsl.expected.msl
+++ b/test/tint/array/function_return_type.wgsl.expected.msl
@@ -6,8 +6,8 @@
 };
 
 tint_array_wrapper f1() {
-  tint_array_wrapper const tint_symbol_1 = {.arr={}};
-  return tint_symbol_1;
+  tint_array_wrapper const tint_symbol_6 = {.arr={}};
+  return tint_symbol_6;
 }
 
 struct tint_array_wrapper_1 {
@@ -15,8 +15,11 @@
 };
 
 tint_array_wrapper_1 f2() {
-  tint_array_wrapper_1 const tint_symbol_2 = {.arr={f1(), f1(), f1()}};
-  return tint_symbol_2;
+  tint_array_wrapper const tint_symbol_1 = f1();
+  tint_array_wrapper const tint_symbol_2 = f1();
+  tint_array_wrapper const tint_symbol_3 = f1();
+  tint_array_wrapper_1 const tint_symbol_7 = {.arr={tint_symbol_1, tint_symbol_2, tint_symbol_3}};
+  return tint_symbol_7;
 }
 
 struct tint_array_wrapper_2 {
@@ -24,8 +27,10 @@
 };
 
 tint_array_wrapper_2 f3() {
-  tint_array_wrapper_2 const tint_symbol_3 = {.arr={f2(), f2()}};
-  return tint_symbol_3;
+  tint_array_wrapper_1 const tint_symbol_4 = f2();
+  tint_array_wrapper_1 const tint_symbol_5 = f2();
+  tint_array_wrapper_2 const tint_symbol_8 = {.arr={tint_symbol_4, tint_symbol_5}};
+  return tint_symbol_8;
 }
 
 kernel void tint_symbol() {
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
index d4f0ede..de73d59 100644
--- a/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
+++ b/test/tint/benchmark/skinned-shadowed-pbr-fragment.wgsl.expected.glsl
@@ -83,7 +83,10 @@
 uvec3 getTile(vec4 fragCoord) {
   float sliceScale = (float(tileCount.z) / log2((camera.zFar / camera.zNear)));
   float sliceBias = -(((float(tileCount.z) * log2(camera.zNear)) / log2((camera.zFar / camera.zNear))));
-  uint zTile = uint(max(((log2(linearDepth(fragCoord.z)) * sliceScale) + sliceBias), 0.0f));
+  float tint_symbol_3 = linearDepth(fragCoord.z);
+  float tint_symbol_4 = log2(tint_symbol_3);
+  float tint_symbol_5 = max(((tint_symbol_4 * sliceScale) + sliceBias), 0.0f);
+  uint zTile = uint(tint_symbol_5);
   return uvec3(uint((fragCoord.x / (camera.outputSize.x / float(tileCount.x)))), uint((fragCoord.y / (camera.outputSize.y / float(tileCount.y)))), zTile);
 }
 
@@ -157,7 +160,9 @@
   if ((shadowIndex == -1)) {
     return 1.0f;
   }
-  shadowIndex = (shadowIndex + getCubeFace((pointToLight * -1.0f)));
+  int tint_symbol_6 = shadowIndex;
+  int tint_symbol_7 = getCubeFace((pointToLight * -1.0f));
+  shadowIndex = (tint_symbol_6 + tint_symbol_7);
   vec4 viewport = shadow.properties[shadowIndex].viewport;
   vec4 lightPos = (shadow.properties[shadowIndex].viewProj * vec4(worldPos, 1.0f));
   vec3 shadowPos = vec3((((lightPos.xy / lightPos.w) * vec2(0.5f, -0.5f)) + vec2(0.5f, 0.5f)), (lightPos.z / lightPos.w));
@@ -312,7 +317,9 @@
   vec3 numerator = ((NDF * G) * F);
   float denominator = max(((4.0f * max(dot(surface.normal, surface.v), 0.0f)) * NdotL), 0.001f);
   vec3 specular = (numerator / vec3(denominator));
-  vec3 radiance = ((light.color * light.intensity) * lightAttenuation(light));
+  vec3 tint_symbol_8 = (light.color * light.intensity);
+  float tint_symbol_9 = lightAttenuation(light);
+  vec3 radiance = (tint_symbol_8 * tint_symbol_9);
   return (((((kD * surface.albedo) / vec3(PI)) + specular) * radiance) * NdotL);
 }
 
@@ -333,7 +340,9 @@
     light.color = globalLights.dirColor;
     light.intensity = globalLights.dirIntensity;
     float lightVis = dirLightVisibility(tint_symbol.worldPos);
-    Lo = (Lo + (lightRadiance(light, surface) * lightVis));
+    vec3 tint_symbol_10 = Lo;
+    vec3 tint_symbol_11 = lightRadiance(light, surface);
+    Lo = (tint_symbol_10 + (tint_symbol_11 * lightVis));
   }
   uint clusterIndex = getClusterIndex(tint_symbol.position);
   uint lightOffset = clusterLights.lights[clusterIndex].offset;
@@ -348,7 +357,9 @@
       light.color = globalLights.lights[i].color;
       light.intensity = globalLights.lights[i].intensity;
       float lightVis = pointLightVisibility(i, tint_symbol.worldPos, light.pointToLight);
-      Lo = (Lo + (lightRadiance(light, surface) * lightVis));
+      vec3 tint_symbol_12 = Lo;
+      vec3 tint_symbol_13 = lightRadiance(light, surface);
+      Lo = (tint_symbol_12 + (tint_symbol_13 * lightVis));
     }
   }
   vec2 ssaoCoord = (tint_symbol.position.xy / vec2(textureSize(ssaoTexture_1, 0).xy));
@@ -362,8 +373,8 @@
 }
 
 void main() {
-  VertexOutput tint_symbol_3 = VertexOutput(gl_FragCoord, worldPos_1, view_1, texcoord_1, texcoord2_1, color_1, instanceColor_1, normal_1, tangent_1, bitangent_1);
-  FragmentOutput inner_result = fragmentMain(tint_symbol_3);
+  VertexOutput tint_symbol_14 = VertexOutput(gl_FragCoord, worldPos_1, view_1, texcoord_1, texcoord2_1, color_1, instanceColor_1, normal_1, tangent_1, bitangent_1);
+  FragmentOutput inner_result = fragmentMain(tint_symbol_14);
   color_2 = inner_result.color;
   emissive_1 = inner_result.emissive;
   return;
diff --git a/test/tint/bug/tint/1076.wgsl.expected.msl b/test/tint/bug/tint/1076.wgsl.expected.msl
index b01d931..926bbcb 100644
--- a/test/tint/bug/tint/1076.wgsl.expected.msl
+++ b/test/tint/bug/tint/1076.wgsl.expected.msl
@@ -20,13 +20,13 @@
   if ((in.mask == 0u)) {
     return in;
   }
-  FragIn const tint_symbol_5 = {.a=b, .mask=1u};
-  return tint_symbol_5;
+  FragIn const tint_symbol_4 = {.a=b, .mask=1u};
+  return tint_symbol_4;
 }
 
 fragment tint_symbol_3 tint_symbol(uint mask [[sample_mask]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
-  FragIn const tint_symbol_4 = {.a=tint_symbol_1.a, .mask=mask};
-  FragIn const inner_result = tint_symbol_inner(tint_symbol_4, tint_symbol_1.b);
+  FragIn const tint_symbol_5 = {.a=tint_symbol_1.a, .mask=mask};
+  FragIn const inner_result = tint_symbol_inner(tint_symbol_5, tint_symbol_1.b);
   tint_symbol_3 wrapper_result = {};
   wrapper_result.a = inner_result.a;
   wrapper_result.mask = inner_result.mask;
diff --git a/test/tint/bug/tint/1113.wgsl.expected.glsl b/test/tint/bug/tint/1113.wgsl.expected.glsl
index 9a70816..43d7029 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.glsl
@@ -199,7 +199,8 @@
   uint numTriangles = atomicOr(counters.values[voxelIndex], 0u);
   int offset = -1;
   if ((numTriangles > 0u)) {
-    offset = int(atomicAdd(dbg.offsetCounter, numTriangles));
+    uint tint_symbol = atomicAdd(dbg.offsetCounter, numTriangles);
+    offset = int(tint_symbol);
   }
   atomicExchange(LUT.values[voxelIndex], offset);
 }
diff --git a/test/tint/bug/tint/1113.wgsl.expected.hlsl b/test/tint/bug/tint/1113.wgsl.expected.hlsl
index b2da18f..fa8e7e2 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/1113.wgsl.expected.hlsl
@@ -126,7 +126,8 @@
   uint numTriangles = atomicLoad_1(counters, (4u * voxelIndex));
   int offset = -1;
   if ((numTriangles > 0u)) {
-    offset = int(atomicAdd_1(dbg, 0u, numTriangles));
+    const uint tint_symbol_6 = atomicAdd_1(dbg, 0u, numTriangles);
+    offset = int(tint_symbol_6);
   }
   atomicStore_1(LUT, (4u * voxelIndex), offset);
 }
diff --git a/test/tint/bug/tint/1113.wgsl.expected.msl b/test/tint/bug/tint/1113.wgsl.expected.msl
index 1cbf979..2c4dcc8 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.msl
+++ b/test/tint/bug/tint/1113.wgsl.expected.msl
@@ -58,15 +58,15 @@
   /* 0x0000 */ atomic_int values[1];
 };
 
-float3 toVoxelPos(float3 position, const constant Uniforms* const tint_symbol) {
-  float3 bbMin = float3((*(tint_symbol)).bbMin[0], (*(tint_symbol)).bbMin[1], (*(tint_symbol)).bbMin[2]);
-  float3 bbMax = float3((*(tint_symbol)).bbMax[0], (*(tint_symbol)).bbMax[1], (*(tint_symbol)).bbMax[2]);
+float3 toVoxelPos(float3 position, const constant Uniforms* const tint_symbol_1) {
+  float3 bbMin = float3((*(tint_symbol_1)).bbMin[0], (*(tint_symbol_1)).bbMin[1], (*(tint_symbol_1)).bbMin[2]);
+  float3 bbMax = float3((*(tint_symbol_1)).bbMax[0], (*(tint_symbol_1)).bbMax[1], (*(tint_symbol_1)).bbMax[2]);
   float3 bbSize = (bbMax - bbMin);
   float cubeSize = fmax(fmax(bbSize[0], bbSize[1]), bbSize[2]);
-  float gridSize = float((*(tint_symbol)).gridSize);
-  float gx = ((gridSize * (position[0] - (*(tint_symbol)).bbMin[0])) / cubeSize);
-  float gy = ((gridSize * (position[1] - (*(tint_symbol)).bbMin[1])) / cubeSize);
-  float gz = ((gridSize * (position[2] - (*(tint_symbol)).bbMin[2])) / cubeSize);
+  float gridSize = float((*(tint_symbol_1)).gridSize);
+  float gx = ((gridSize * (position[0] - (*(tint_symbol_1)).bbMin[0])) / cubeSize);
+  float gy = ((gridSize * (position[1] - (*(tint_symbol_1)).bbMin[1])) / cubeSize);
+  float gz = ((gridSize * (position[2] - (*(tint_symbol_1)).bbMin[2])) / cubeSize);
   return float3(gx, gy, gz);
 }
 
@@ -82,89 +82,90 @@
   return uint3(x_1, y_1, z_1);
 }
 
-float3 loadPosition(uint vertexIndex, device F32s* const tint_symbol_1) {
-  float3 position = float3((*(tint_symbol_1)).values[((3u * vertexIndex) + 0u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 1u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 2u)]);
+float3 loadPosition(uint vertexIndex, device F32s* const tint_symbol_2) {
+  float3 position = float3((*(tint_symbol_2)).values[((3u * vertexIndex) + 0u)], (*(tint_symbol_2)).values[((3u * vertexIndex) + 1u)], (*(tint_symbol_2)).values[((3u * vertexIndex) + 2u)]);
   return position;
 }
 
-void doIgnore(const constant Uniforms* const tint_symbol_2, device Dbg* const tint_symbol_3, device AU32s* const tint_symbol_4, device U32s* const tint_symbol_5, device F32s* const tint_symbol_6, device AI32s* const tint_symbol_7) {
-  uint g42 = (*(tint_symbol_2)).numTriangles;
-  uint kj6 = (*(tint_symbol_3)).value1;
-  uint b53 = atomic_load_explicit(&((*(tint_symbol_4)).values[0]), memory_order_relaxed);
-  uint rwg = (*(tint_symbol_5)).values[0];
-  float rb5 = (*(tint_symbol_6)).values[0];
-  int g55 = atomic_load_explicit(&((*(tint_symbol_7)).values[0]), memory_order_relaxed);
+void doIgnore(const constant Uniforms* const tint_symbol_3, device Dbg* const tint_symbol_4, device AU32s* const tint_symbol_5, device U32s* const tint_symbol_6, device F32s* const tint_symbol_7, device AI32s* const tint_symbol_8) {
+  uint g42 = (*(tint_symbol_3)).numTriangles;
+  uint kj6 = (*(tint_symbol_4)).value1;
+  uint b53 = atomic_load_explicit(&((*(tint_symbol_5)).values[0]), memory_order_relaxed);
+  uint rwg = (*(tint_symbol_6)).values[0];
+  float rb5 = (*(tint_symbol_7)).values[0];
+  int g55 = atomic_load_explicit(&((*(tint_symbol_8)).values[0]), memory_order_relaxed);
 }
 
-void main_count_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_8, device Dbg* const tint_symbol_9, device AU32s* const tint_symbol_10, device U32s* const tint_symbol_11, device F32s* const tint_symbol_12, device AI32s* const tint_symbol_13) {
+void main_count_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_9, device Dbg* const tint_symbol_10, device AU32s* const tint_symbol_11, device U32s* const tint_symbol_12, device F32s* const tint_symbol_13, device AI32s* const tint_symbol_14) {
   uint triangleIndex = GlobalInvocationID[0];
-  if ((triangleIndex >= (*(tint_symbol_8)).numTriangles)) {
+  if ((triangleIndex >= (*(tint_symbol_9)).numTriangles)) {
     return;
   }
-  doIgnore(tint_symbol_8, tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12, tint_symbol_13);
-  uint i0 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 0u)];
-  uint i1 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 1u)];
-  uint i2 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 2u)];
-  float3 p0 = loadPosition(i0, tint_symbol_12);
-  float3 p1 = loadPosition(i1, tint_symbol_12);
-  float3 p2 = loadPosition(i2, tint_symbol_12);
+  doIgnore(tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12, tint_symbol_13, tint_symbol_14);
+  uint i0 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 0u)];
+  uint i1 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 1u)];
+  uint i2 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 2u)];
+  float3 p0 = loadPosition(i0, tint_symbol_13);
+  float3 p1 = loadPosition(i1, tint_symbol_13);
+  float3 p2 = loadPosition(i2, tint_symbol_13);
   float3 center = (((p0 + p1) + p2) / 3.0f);
-  float3 voxelPos = toVoxelPos(center, tint_symbol_8);
-  uint voxelIndex = toIndex1D((*(tint_symbol_8)).gridSize, voxelPos);
-  uint acefg = atomic_fetch_add_explicit(&((*(tint_symbol_10)).values[voxelIndex]), 1u, memory_order_relaxed);
+  float3 voxelPos = toVoxelPos(center, tint_symbol_9);
+  uint voxelIndex = toIndex1D((*(tint_symbol_9)).gridSize, voxelPos);
+  uint acefg = atomic_fetch_add_explicit(&((*(tint_symbol_11)).values[voxelIndex]), 1u, memory_order_relaxed);
   if ((triangleIndex == 0u)) {
-    (*(tint_symbol_9)).value0 = (*(tint_symbol_8)).gridSize;
-    (*(tint_symbol_9)).value_f32_0 = center[0];
-    (*(tint_symbol_9)).value_f32_1 = center[1];
-    (*(tint_symbol_9)).value_f32_2 = center[2];
+    (*(tint_symbol_10)).value0 = (*(tint_symbol_9)).gridSize;
+    (*(tint_symbol_10)).value_f32_0 = center[0];
+    (*(tint_symbol_10)).value_f32_1 = center[1];
+    (*(tint_symbol_10)).value_f32_2 = center[2];
   }
 }
 
-kernel void main_count(const constant Uniforms* tint_symbol_14 [[buffer(0)]], device Dbg* tint_symbol_15 [[buffer(1)]], device AU32s* tint_symbol_16 [[buffer(2)]], device U32s* tint_symbol_17 [[buffer(3)]], device F32s* tint_symbol_18 [[buffer(4)]], device AI32s* tint_symbol_19 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
-  main_count_inner(GlobalInvocationID, tint_symbol_14, tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18, tint_symbol_19);
+kernel void main_count(const constant Uniforms* tint_symbol_15 [[buffer(0)]], device Dbg* tint_symbol_16 [[buffer(1)]], device AU32s* tint_symbol_17 [[buffer(2)]], device U32s* tint_symbol_18 [[buffer(3)]], device F32s* tint_symbol_19 [[buffer(4)]], device AI32s* tint_symbol_20 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+  main_count_inner(GlobalInvocationID, tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20);
   return;
 }
 
-void main_create_lut_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_20, device Dbg* const tint_symbol_21, device AU32s* const tint_symbol_22, device U32s* const tint_symbol_23, device F32s* const tint_symbol_24, device AI32s* const tint_symbol_25) {
+void main_create_lut_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_21, device Dbg* const tint_symbol_22, device AU32s* const tint_symbol_23, device U32s* const tint_symbol_24, device F32s* const tint_symbol_25, device AI32s* const tint_symbol_26) {
   uint voxelIndex = GlobalInvocationID[0];
-  doIgnore(tint_symbol_20, tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25);
-  uint maxVoxels = (((*(tint_symbol_20)).gridSize * (*(tint_symbol_20)).gridSize) * (*(tint_symbol_20)).gridSize);
+  doIgnore(tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25, tint_symbol_26);
+  uint maxVoxels = (((*(tint_symbol_21)).gridSize * (*(tint_symbol_21)).gridSize) * (*(tint_symbol_21)).gridSize);
   if ((voxelIndex >= maxVoxels)) {
     return;
   }
-  uint numTriangles = atomic_load_explicit(&((*(tint_symbol_22)).values[voxelIndex]), memory_order_relaxed);
+  uint numTriangles = atomic_load_explicit(&((*(tint_symbol_23)).values[voxelIndex]), memory_order_relaxed);
   int offset = -1;
   if ((numTriangles > 0u)) {
-    offset = int(atomic_fetch_add_explicit(&((*(tint_symbol_21)).offsetCounter), numTriangles, memory_order_relaxed));
+    uint const tint_symbol = atomic_fetch_add_explicit(&((*(tint_symbol_22)).offsetCounter), numTriangles, memory_order_relaxed);
+    offset = int(tint_symbol);
   }
-  atomic_store_explicit(&((*(tint_symbol_25)).values[voxelIndex]), offset, memory_order_relaxed);
+  atomic_store_explicit(&((*(tint_symbol_26)).values[voxelIndex]), offset, memory_order_relaxed);
 }
 
-kernel void main_create_lut(const constant Uniforms* tint_symbol_26 [[buffer(0)]], device Dbg* tint_symbol_27 [[buffer(1)]], device AU32s* tint_symbol_28 [[buffer(2)]], device U32s* tint_symbol_29 [[buffer(3)]], device F32s* tint_symbol_30 [[buffer(4)]], device AI32s* tint_symbol_31 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
-  main_create_lut_inner(GlobalInvocationID, tint_symbol_26, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31);
+kernel void main_create_lut(const constant Uniforms* tint_symbol_27 [[buffer(0)]], device Dbg* tint_symbol_28 [[buffer(1)]], device AU32s* tint_symbol_29 [[buffer(2)]], device U32s* tint_symbol_30 [[buffer(3)]], device F32s* tint_symbol_31 [[buffer(4)]], device AI32s* tint_symbol_32 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+  main_create_lut_inner(GlobalInvocationID, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_32);
   return;
 }
 
-void main_sort_triangles_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_32, device Dbg* const tint_symbol_33, device AU32s* const tint_symbol_34, device U32s* const tint_symbol_35, device F32s* const tint_symbol_36, device AI32s* const tint_symbol_37) {
+void main_sort_triangles_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_33, device Dbg* const tint_symbol_34, device AU32s* const tint_symbol_35, device U32s* const tint_symbol_36, device F32s* const tint_symbol_37, device AI32s* const tint_symbol_38) {
   uint triangleIndex = GlobalInvocationID[0];
-  doIgnore(tint_symbol_32, tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37);
-  if ((triangleIndex >= (*(tint_symbol_32)).numTriangles)) {
+  doIgnore(tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37, tint_symbol_38);
+  if ((triangleIndex >= (*(tint_symbol_33)).numTriangles)) {
     return;
   }
-  uint i0 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 0u)];
-  uint i1 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 1u)];
-  uint i2 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 2u)];
-  float3 p0 = loadPosition(i0, tint_symbol_36);
-  float3 p1 = loadPosition(i1, tint_symbol_36);
-  float3 p2 = loadPosition(i2, tint_symbol_36);
+  uint i0 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 0u)];
+  uint i1 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 1u)];
+  uint i2 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 2u)];
+  float3 p0 = loadPosition(i0, tint_symbol_37);
+  float3 p1 = loadPosition(i1, tint_symbol_37);
+  float3 p2 = loadPosition(i2, tint_symbol_37);
   float3 center = (((p0 + p1) + p2) / 3.0f);
-  float3 voxelPos = toVoxelPos(center, tint_symbol_32);
-  uint voxelIndex = toIndex1D((*(tint_symbol_32)).gridSize, voxelPos);
-  int triangleOffset = atomic_fetch_add_explicit(&((*(tint_symbol_37)).values[voxelIndex]), 1, memory_order_relaxed);
+  float3 voxelPos = toVoxelPos(center, tint_symbol_33);
+  uint voxelIndex = toIndex1D((*(tint_symbol_33)).gridSize, voxelPos);
+  int triangleOffset = atomic_fetch_add_explicit(&((*(tint_symbol_38)).values[voxelIndex]), 1, memory_order_relaxed);
 }
 
-kernel void main_sort_triangles(const constant Uniforms* tint_symbol_38 [[buffer(0)]], device Dbg* tint_symbol_39 [[buffer(1)]], device AU32s* tint_symbol_40 [[buffer(2)]], device U32s* tint_symbol_41 [[buffer(3)]], device F32s* tint_symbol_42 [[buffer(4)]], device AI32s* tint_symbol_43 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
-  main_sort_triangles_inner(GlobalInvocationID, tint_symbol_38, tint_symbol_39, tint_symbol_40, tint_symbol_41, tint_symbol_42, tint_symbol_43);
+kernel void main_sort_triangles(const constant Uniforms* tint_symbol_39 [[buffer(0)]], device Dbg* tint_symbol_40 [[buffer(1)]], device AU32s* tint_symbol_41 [[buffer(2)]], device U32s* tint_symbol_42 [[buffer(3)]], device F32s* tint_symbol_43 [[buffer(4)]], device AI32s* tint_symbol_44 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+  main_sort_triangles_inner(GlobalInvocationID, tint_symbol_39, tint_symbol_40, tint_symbol_41, tint_symbol_42, tint_symbol_43, tint_symbol_44);
   return;
 }
 
diff --git a/test/tint/bug/tint/1113.wgsl.expected.spvasm b/test/tint/bug/tint/1113.wgsl.expected.spvasm
index fc5ae50..124f9cf 100644
--- a/test/tint/bug/tint/1113.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/1113.wgsl.expected.spvasm
@@ -542,11 +542,11 @@
                OpSelectionMerge %321 None
                OpBranchConditional %320 %322 %321
         %322 = OpLabel
-        %326 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0
-        %327 = OpLoad %uint %numTriangles
-        %324 = OpAtomicIAdd %uint %326 %uint_1 %uint_0 %327
-        %323 = OpBitcast %int %324
-               OpStore %offset %323
+        %325 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0
+        %326 = OpLoad %uint %numTriangles
+        %323 = OpAtomicIAdd %uint %325 %uint_1 %uint_0 %326
+        %327 = OpBitcast %int %323
+               OpStore %offset %327
                OpBranch %321
         %321 = OpLabel
         %330 = OpLoad %uint %voxelIndex_0
diff --git a/test/tint/bug/tint/1321.wgsl.expected.glsl b/test/tint/bug/tint/1321.wgsl.expected.glsl
index f1b3b8b..e42a2f0 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1321.wgsl.expected.glsl
@@ -7,7 +7,8 @@
 
 void tint_symbol() {
   float arr[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
-  int a_save = foo();
+  int tint_symbol_1 = foo();
+  int a_save = tint_symbol_1;
   {
     for(; ; ) {
       float x = arr[a_save];
diff --git a/test/tint/bug/tint/1321.wgsl.expected.msl b/test/tint/bug/tint/1321.wgsl.expected.msl
index 8f72f2a..8c96d14 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.msl
+++ b/test/tint/bug/tint/1321.wgsl.expected.msl
@@ -11,7 +11,8 @@
 
 fragment void tint_symbol() {
   tint_array_wrapper arr = {.arr={}};
-  int const a_save = foo();
+  int const tint_symbol_1 = foo();
+  int const a_save = tint_symbol_1;
   for(; ; ) {
     float const x = arr.arr[a_save];
     break;
diff --git a/test/tint/bug/tint/534.wgsl.expected.glsl b/test/tint/bug/tint/534.wgsl.expected.glsl
index 15635c2..1b68dd7 100644
--- a/test/tint/bug/tint/534.wgsl.expected.glsl
+++ b/test/tint/bug/tint/534.wgsl.expected.glsl
@@ -37,7 +37,8 @@
   uvec4 dstColorBits = uvec4(dstColor);
   {
     for(uint i = 0u; (i < uniforms.channelCount); i = (i + 1u)) {
-      srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
+      uint tint_symbol_2 = ConvertToFp16FloatValue(srcColor[i]);
+      srcColorBits[i] = tint_symbol_2;
       bool tint_tmp = success;
       if (tint_tmp) {
         tint_tmp = (srcColorBits[i] == dstColorBits[i]);
diff --git a/test/tint/bug/tint/534.wgsl.expected.hlsl b/test/tint/bug/tint/534.wgsl.expected.hlsl
index 0bee2d8..ecd26aa 100644
--- a/test/tint/bug/tint/534.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/534.wgsl.expected.hlsl
@@ -33,7 +33,8 @@
   uint4 dstColorBits = uint4(dstColor);
   {
     [loop] for(uint i = 0u; (i < uniforms[0].w); i = (i + 1u)) {
-      set_uint4(srcColorBits, i, ConvertToFp16FloatValue(srcColor[i]));
+      const uint tint_symbol_3 = ConvertToFp16FloatValue(srcColor[i]);
+      set_uint4(srcColorBits, i, tint_symbol_3);
       bool tint_tmp_1 = success;
       if (tint_tmp_1) {
         tint_tmp_1 = (srcColorBits[i] == dstColorBits[i]);
diff --git a/test/tint/bug/tint/534.wgsl.expected.msl b/test/tint/bug/tint/534.wgsl.expected.msl
index a2b235f..041713a 100644
--- a/test/tint/bug/tint/534.wgsl.expected.msl
+++ b/test/tint/bug/tint/534.wgsl.expected.msl
@@ -16,32 +16,33 @@
   return 1u;
 }
 
-void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, const constant Uniforms* const tint_symbol_2, texture2d<float, access::sample> tint_symbol_3, device OutputBuf* const tint_symbol_4) {
-  int2 size = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
+void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, texture2d<float, access::sample> tint_symbol_4, device OutputBuf* const tint_symbol_5) {
+  int2 size = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
   int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy);
   int2 srcTexCoord = dstTexCoord;
-  if (((*(tint_symbol_2)).dstTextureFlipY == 1u)) {
+  if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) {
     srcTexCoord[1] = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(size[1]) - as_type<uint>(dstTexCoord[1])))) - as_type<uint>(1)));
   }
-  float4 srcColor = tint_symbol_1.read(uint2(srcTexCoord), 0);
-  float4 dstColor = tint_symbol_3.read(uint2(dstTexCoord), 0);
+  float4 srcColor = tint_symbol_2.read(uint2(srcTexCoord), 0);
+  float4 dstColor = tint_symbol_4.read(uint2(dstTexCoord), 0);
   bool success = true;
   uint4 srcColorBits = 0u;
   uint4 dstColorBits = uint4(dstColor);
-  for(uint i = 0u; (i < (*(tint_symbol_2)).channelCount); i = (i + 1u)) {
-    srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
+  for(uint i = 0u; (i < (*(tint_symbol_3)).channelCount); i = (i + 1u)) {
+    uint const tint_symbol_1 = ConvertToFp16FloatValue(srcColor[i]);
+    srcColorBits[i] = tint_symbol_1;
     success = (success && (srcColorBits[i] == dstColorBits[i]));
   }
   uint outputIndex = ((GlobalInvocationID[1] * uint(size[0])) + GlobalInvocationID[0]);
   if (success) {
-    (*(tint_symbol_4)).result[outputIndex] = uint(1);
+    (*(tint_symbol_5)).result[outputIndex] = uint(1);
   } else {
-    (*(tint_symbol_4)).result[outputIndex] = uint(0);
+    (*(tint_symbol_5)).result[outputIndex] = uint(0);
   }
 }
 
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_5 [[texture(0)]], const constant Uniforms* tint_symbol_6 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_7 [[texture(1)]], device OutputBuf* tint_symbol_8 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
-  tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
+kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_6 [[texture(0)]], const constant Uniforms* tint_symbol_7 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_8 [[texture(1)]], device OutputBuf* tint_symbol_9 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+  tint_symbol_inner(GlobalInvocationID, tint_symbol_6, tint_symbol_7, tint_symbol_8, tint_symbol_9);
   return;
 }
 
diff --git a/test/tint/bug/tint/534.wgsl.expected.spvasm b/test/tint/bug/tint/534.wgsl.expected.spvasm
index 0254aab..1a9da0c 100644
--- a/test/tint/bug/tint/534.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/534.wgsl.expected.spvasm
@@ -169,13 +169,13 @@
          %94 = OpLabel
                OpBranch %84
          %93 = OpLabel
-         %95 = OpLoad %uint %i
-         %96 = OpAccessChain %_ptr_Function_uint %srcColorBits %95
-         %98 = OpLoad %uint %i
-        %100 = OpAccessChain %_ptr_Function_float %srcColor %98
-        %101 = OpLoad %float %100
-         %97 = OpFunctionCall %uint %ConvertToFp16FloatValue %101
-               OpStore %96 %97
+         %96 = OpLoad %uint %i
+         %98 = OpAccessChain %_ptr_Function_float %srcColor %96
+         %99 = OpLoad %float %98
+         %95 = OpFunctionCall %uint %ConvertToFp16FloatValue %99
+        %100 = OpLoad %uint %i
+        %101 = OpAccessChain %_ptr_Function_uint %srcColorBits %100
+               OpStore %101 %95
         %102 = OpLoad %bool %success
                OpSelectionMerge %103 None
                OpBranchConditional %102 %104 %103
diff --git a/test/tint/bug/tint/749.spvasm.expected.msl b/test/tint/bug/tint/749.spvasm.expected.msl
index b2c64c8..1349abd 100644
--- a/test/tint/bug/tint/749.spvasm.expected.msl
+++ b/test/tint/bug/tint/749.spvasm.expected.msl
@@ -61,18 +61,18 @@
   int const x_34_save = x_33;
   int const x_35 = (*(tint_symbol_81)).numbers.arr[x_34_save];
   QuicksortObject const x_943 = *(tint_symbol_81);
-  tint_array_wrapper const tint_symbol_3 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_4 = {.numbers=tint_symbol_3};
-  *(tint_symbol_81) = tint_symbol_4;
+  tint_array_wrapper const tint_symbol_2 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_3 = {.numbers=tint_symbol_2};
+  *(tint_symbol_81) = tint_symbol_3;
   *(tint_symbol_81) = x_943;
   float2 const x_527 = float2(x_526[0], x_526[0]);
   int const x_36_save = x_32;
   float3 const x_528 = float3(x_524[0], x_524[2], x_524[0]);
   (*(tint_symbol_81)).numbers.arr[x_36_save] = x_35;
   QuicksortObject const x_944 = *(tint_symbol_81);
-  tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_6 = {.numbers=tint_symbol_5};
-  *(tint_symbol_81) = tint_symbol_6;
+  tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_5 = {.numbers=tint_symbol_4};
+  *(tint_symbol_81) = tint_symbol_5;
   *(tint_symbol_81) = x_944;
   float3 const x_529 = float3(x_526[1], x_526[2], x_526[0]);
   int const x_945 = *(i);
@@ -95,9 +95,9 @@
   (*(tint_symbol_81)).numbers.arr[x_36_save] = 0;
   (*(tint_symbol_81)).numbers.arr[x_36_save] = x_949;
   QuicksortObject const x_950 = *(tint_symbol_81);
-  tint_array_wrapper const tint_symbol_7 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_8 = {.numbers=tint_symbol_7};
-  *(tint_symbol_81) = tint_symbol_8;
+  tint_array_wrapper const tint_symbol_6 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_7 = {.numbers=tint_symbol_6};
+  *(tint_symbol_81) = tint_symbol_7;
   *(tint_symbol_81) = x_950;
   float3 const x_532 = float3(x_528[0], x_528[1], x_528[0]);
   int const x_951 = (*(tint_symbol_81)).numbers.arr[x_34_save];
@@ -153,9 +153,9 @@
   float3 const x_536 = float3(x_534[0], x_534[2], x_535[0]);
   j_1 = 10;
   QuicksortObject const x_960 = *(tint_symbol_82);
-  tint_array_wrapper const tint_symbol_9 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_10 = {.numbers=tint_symbol_9};
-  *(tint_symbol_82) = tint_symbol_10;
+  tint_array_wrapper const tint_symbol_8 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_9 = {.numbers=tint_symbol_8};
+  *(tint_symbol_82) = tint_symbol_9;
   *(tint_symbol_82) = x_960;
   while (true) {
     int const x_961 = pivot;
@@ -170,9 +170,9 @@
     pivot = x_963;
     x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]);
     QuicksortObject const x_964 = *(tint_symbol_82);
-    tint_array_wrapper const tint_symbol_11 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_12 = {.numbers=tint_symbol_11};
-    *(tint_symbol_82) = tint_symbol_12;
+    tint_array_wrapper const tint_symbol_10 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_11 = {.numbers=tint_symbol_10};
+    *(tint_symbol_82) = tint_symbol_11;
     *(tint_symbol_82) = x_964;
     int const x_56 = *(h);
     int const x_965 = *(h);
@@ -206,9 +206,9 @@
     param_1 = x_971;
     int const x_62 = (*(tint_symbol_82)).numbers.arr[x_61_save];
     QuicksortObject const x_972 = *(tint_symbol_82);
-    tint_array_wrapper const tint_symbol_13 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_14 = {.numbers=tint_symbol_13};
-    *(tint_symbol_82) = tint_symbol_14;
+    tint_array_wrapper const tint_symbol_12 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_13 = {.numbers=tint_symbol_12};
+    *(tint_symbol_82) = tint_symbol_13;
     *(tint_symbol_82) = x_972;
     int const x_63 = pivot;
     float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]);
@@ -267,9 +267,9 @@
       param_1 = x_985;
     }
     QuicksortObject const x_986 = *(tint_symbol_82);
-    tint_array_wrapper const tint_symbol_15 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_16 = {.numbers=tint_symbol_15};
-    *(tint_symbol_82) = tint_symbol_16;
+    tint_array_wrapper const tint_symbol_14 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_15 = {.numbers=tint_symbol_14};
+    *(tint_symbol_82) = tint_symbol_15;
     *(tint_symbol_82) = x_986;
     {
       int const x_987 = *(h);
@@ -302,9 +302,9 @@
   (*(tint_symbol_82)).numbers.arr[x_42_save] = x_993;
   float2 const x_549 = float2(x_534[0], x_534[1]);
   QuicksortObject const x_994 = *(tint_symbol_82);
-  tint_array_wrapper const tint_symbol_17 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_18 = {.numbers=tint_symbol_17};
-  *(tint_symbol_82) = tint_symbol_18;
+  tint_array_wrapper const tint_symbol_16 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_17 = {.numbers=tint_symbol_16};
+  *(tint_symbol_82) = tint_symbol_17;
   *(tint_symbol_82) = x_994;
   int const x_995 = *(h);
   *(h) = 0;
@@ -372,8 +372,8 @@
   param_5 = x_1007;
   h_1 = 9;
   tint_array_wrapper const x_1008 = stack;
-  tint_array_wrapper const tint_symbol_19 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  stack = tint_symbol_19;
+  tint_array_wrapper const tint_symbol_18 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  stack = tint_symbol_18;
   stack = x_1008;
   float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]);
   int const x_1009 = param_5;
@@ -406,15 +406,15 @@
   param_4 = x_1015;
   int const x_95 = l_1;
   QuicksortObject const x_1016 = *(tint_symbol_83);
-  tint_array_wrapper const tint_symbol_20 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_21 = {.numbers=tint_symbol_20};
-  *(tint_symbol_83) = tint_symbol_21;
+  tint_array_wrapper const tint_symbol_19 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_20 = {.numbers=tint_symbol_19};
+  *(tint_symbol_83) = tint_symbol_20;
   *(tint_symbol_83) = x_1016;
   float3 const x_560 = float3(x_559[1], x_559[0], x_557[0]);
   int const x_96_save = x_94;
   tint_array_wrapper const x_1017 = stack;
-  tint_array_wrapper const tint_symbol_22 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  stack = tint_symbol_22;
+  tint_array_wrapper const tint_symbol_21 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  stack = tint_symbol_21;
   stack = x_1017;
   float3 const x_561 = float3(x_556[1], x_556[1], x_556[1]);
   int const x_1018 = l_1;
@@ -464,13 +464,13 @@
     h_1 = 0;
     h_1 = x_1028;
     tint_array_wrapper const x_1029 = stack;
-    tint_array_wrapper const tint_symbol_23 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_23;
+    tint_array_wrapper const tint_symbol_22 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_22;
     stack = x_1029;
     int const x_106 = top;
     tint_array_wrapper const x_1030 = stack;
-    tint_array_wrapper const tint_symbol_24 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_24;
+    tint_array_wrapper const tint_symbol_23 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_23;
     stack = x_1030;
     float2 const x_567 = float2(x_558[0], x_564[2]);
     int const x_1031 = param_4;
@@ -481,9 +481,9 @@
       break;
     }
     QuicksortObject const x_1032 = *(tint_symbol_83);
-    tint_array_wrapper const tint_symbol_25 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_26 = {.numbers=tint_symbol_25};
-    *(tint_symbol_83) = tint_symbol_26;
+    tint_array_wrapper const tint_symbol_24 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_25 = {.numbers=tint_symbol_24};
+    *(tint_symbol_83) = tint_symbol_25;
     *(tint_symbol_83) = x_1032;
     float3 const x_568 = float3(x_559[1], x_559[0], x_563[1]);
     int const x_1033 = param_4;
@@ -508,8 +508,8 @@
     stack.arr[x_96_save] = x_1037;
     int const x_111 = stack.arr[x_110_save];
     tint_array_wrapper const x_1038 = stack;
-    tint_array_wrapper const tint_symbol_27 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_27;
+    tint_array_wrapper const tint_symbol_26 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_26;
     stack = x_1038;
     float3 const x_571 = float3(x_559[1], x_559[0], x_564[1]);
     int const x_1039 = l_1;
@@ -517,8 +517,8 @@
     l_1 = x_1039;
     h_1 = x_111;
     tint_array_wrapper const x_1040 = stack;
-    tint_array_wrapper const tint_symbol_28 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_28;
+    tint_array_wrapper const tint_symbol_27 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_27;
     stack = x_1040;
     float2 const x_572 = float2(x_562[1], x_561[1]);
     int const x_1041 = p;
@@ -610,8 +610,8 @@
       stack.arr[x_100_save] = 0;
       stack.arr[x_100_save] = x_1061;
       tint_array_wrapper const x_1062 = stack;
-      tint_array_wrapper const tint_symbol_29 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_29;
+      tint_array_wrapper const tint_symbol_28 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_28;
       stack = x_1062;
       float2 const x_584 = float2(x_569[2], x_569[1]);
       float3 const x_585 = float3(x_580[1], x_577[0], x_577[0]);
@@ -650,8 +650,8 @@
       h_1 = x_1070;
       top = x_133;
       tint_array_wrapper const x_1071 = stack;
-      tint_array_wrapper const tint_symbol_30 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_30;
+      tint_array_wrapper const tint_symbol_29 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_29;
       stack = x_1071;
       int const x_134 = p;
       float2 const x_590 = float2(x_576[0], x_573[1]);
@@ -676,9 +676,9 @@
     stack.arr[x_96_save] = x_1076;
     float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]);
     QuicksortObject const x_1077 = *(tint_symbol_83);
-    tint_array_wrapper const tint_symbol_31 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_32 = {.numbers=tint_symbol_31};
-    *(tint_symbol_83) = tint_symbol_32;
+    tint_array_wrapper const tint_symbol_30 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30};
+    *(tint_symbol_83) = tint_symbol_31;
     *(tint_symbol_83) = x_1077;
     int const x_137 = p;
     int const x_1078 = stack.arr[x_114_save];
@@ -743,8 +743,8 @@
       float2 const x_601 = float2(x_563[0], x_563[1]);
       stack.arr[x_147_save] = as_type<int>((1u + as_type<uint>(x_145)));
       tint_array_wrapper const x_1093 = stack;
-      tint_array_wrapper const tint_symbol_33 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_33;
+      tint_array_wrapper const tint_symbol_32 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_32;
       stack = x_1093;
       int const x_148 = top;
       int const x_1094 = stack.arr[x_114_save];
@@ -752,8 +752,8 @@
       stack.arr[x_114_save] = x_1094;
       float2 const x_602 = float2(x_565[1], x_599[1]);
       tint_array_wrapper const x_1095 = stack;
-      tint_array_wrapper const tint_symbol_34 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_34;
+      tint_array_wrapper const tint_symbol_33 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_33;
       stack = x_1095;
       int const x_149 = as_type<int>((as_type<uint>(x_148) + as_type<uint>(as_type<int>(1u))));
       int const x_1096 = stack.arr[x_147_save];
@@ -788,9 +788,9 @@
       l_1 = x_1103;
       float2 const x_604 = float2(x_563[2], x_564[0]);
       QuicksortObject const x_1104 = *(tint_symbol_83);
-      tint_array_wrapper const tint_symbol_35 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      QuicksortObject const tint_symbol_36 = {.numbers=tint_symbol_35};
-      *(tint_symbol_83) = tint_symbol_36;
+      tint_array_wrapper const tint_symbol_34 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      QuicksortObject const tint_symbol_35 = {.numbers=tint_symbol_34};
+      *(tint_symbol_83) = tint_symbol_35;
       *(tint_symbol_83) = x_1104;
     }
   }
@@ -809,15 +809,15 @@
   uv = x_717;
   i_2 = 0;
   QuicksortObject const x_721 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_37 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_38 = {.numbers=tint_symbol_37};
-  *(tint_symbol_84) = tint_symbol_38;
+  tint_array_wrapper const tint_symbol_36 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_37 = {.numbers=tint_symbol_36};
+  *(tint_symbol_84) = tint_symbol_37;
   *(tint_symbol_84) = x_721;
   if (true) {
     QuicksortObject const x_722 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_39 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_40 = {.numbers=tint_symbol_39};
-    *(tint_symbol_84) = tint_symbol_40;
+    tint_array_wrapper const tint_symbol_38 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38};
+    *(tint_symbol_84) = tint_symbol_39;
     *(tint_symbol_84) = x_722;
     float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]);
     int const x_158 = i_2;
@@ -829,15 +829,15 @@
     color = x_725;
     float2 const x_432 = float2(x_431[1], x_431[1]);
     QuicksortObject const x_726 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_41 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_42 = {.numbers=tint_symbol_41};
-    *(tint_symbol_84) = tint_symbol_42;
+    tint_array_wrapper const tint_symbol_40 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_41 = {.numbers=tint_symbol_40};
+    *(tint_symbol_84) = tint_symbol_41;
     *(tint_symbol_84) = x_726;
   }
   QuicksortObject const x_756 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_43 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_44 = {.numbers=tint_symbol_43};
-  *(tint_symbol_84) = tint_symbol_44;
+  tint_array_wrapper const tint_symbol_42 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42};
+  *(tint_symbol_84) = tint_symbol_43;
   *(tint_symbol_84) = x_756;
   float2 const x_446 = float2(float2()[0], float2()[0]);
   int const x_757 = i_2;
@@ -845,9 +845,9 @@
   i_2 = x_757;
   quicksort_(tint_symbol_84);
   QuicksortObject const x_758 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_45 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_46 = {.numbers=tint_symbol_45};
-  *(tint_symbol_84) = tint_symbol_46;
+  tint_array_wrapper const tint_symbol_44 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_45 = {.numbers=tint_symbol_44};
+  *(tint_symbol_84) = tint_symbol_45;
   *(tint_symbol_84) = x_758;
   float4 const x_184 = *(tint_symbol_85);
   float2 const x_759 = uv;
@@ -860,18 +860,18 @@
   float2 const x_185 = float2(x_184[0], x_184[1]);
   float3 const x_448 = float3(x_185[1], x_446[1], x_446[1]);
   QuicksortObject const x_761 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_47 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_48 = {.numbers=tint_symbol_47};
-  *(tint_symbol_84) = tint_symbol_48;
+  tint_array_wrapper const tint_symbol_46 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_47 = {.numbers=tint_symbol_46};
+  *(tint_symbol_84) = tint_symbol_47;
   *(tint_symbol_84) = x_761;
   float2 const x_762 = uv;
   uv = float2(0.0f, 0.0f);
   uv = x_762;
   float2 const x_191 = (*(tint_symbol_86)).resolution;
   QuicksortObject const x_763 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_49 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_50 = {.numbers=tint_symbol_49};
-  *(tint_symbol_84) = tint_symbol_50;
+  tint_array_wrapper const tint_symbol_48 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48};
+  *(tint_symbol_84) = tint_symbol_49;
   *(tint_symbol_84) = x_763;
   float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]);
   float3 const x_764 = color;
@@ -879,9 +879,9 @@
   color = x_764;
   float2 const x_192 = (x_185 / x_191);
   QuicksortObject const x_765 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_51 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_52 = {.numbers=tint_symbol_51};
-  *(tint_symbol_84) = tint_symbol_52;
+  tint_array_wrapper const tint_symbol_50 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_51 = {.numbers=tint_symbol_50};
+  *(tint_symbol_84) = tint_symbol_51;
   *(tint_symbol_84) = x_765;
   float2 const x_450 = float2(x_447[0], x_185[1]);
   float3 const x_766 = color;
@@ -897,18 +897,18 @@
   color = x_768;
   float3 const x_451 = float3(x_185[0], x_185[1], x_446[1]);
   QuicksortObject const x_769 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_53 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_54 = {.numbers=tint_symbol_53};
-  *(tint_symbol_84) = tint_symbol_54;
+  tint_array_wrapper const tint_symbol_52 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_53 = {.numbers=tint_symbol_52};
+  *(tint_symbol_84) = tint_symbol_53;
   *(tint_symbol_84) = x_769;
   int const x_770 = (*(tint_symbol_84)).numbers.arr[0u];
   (*(tint_symbol_84)).numbers.arr[0u] = 0;
   (*(tint_symbol_84)).numbers.arr[0u] = x_770;
   int const x_201 = (*(tint_symbol_84)).numbers.arr[0u];
   QuicksortObject const x_771 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_55 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_56 = {.numbers=tint_symbol_55};
-  *(tint_symbol_84) = tint_symbol_56;
+  tint_array_wrapper const tint_symbol_54 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_55 = {.numbers=tint_symbol_54};
+  *(tint_symbol_84) = tint_symbol_55;
   *(tint_symbol_84) = x_771;
   int const x_772 = (*(tint_symbol_84)).numbers.arr[0u];
   (*(tint_symbol_84)).numbers.arr[0u] = 0;
@@ -922,9 +922,9 @@
   i_2 = 0;
   i_2 = x_774;
   QuicksortObject const x_775 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_57 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_58 = {.numbers=tint_symbol_57};
-  *(tint_symbol_84) = tint_symbol_58;
+  tint_array_wrapper const tint_symbol_56 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_57 = {.numbers=tint_symbol_56};
+  *(tint_symbol_84) = tint_symbol_57;
   *(tint_symbol_84) = x_775;
   float3 const x_453 = float3(x_451[0], x_450[0], x_450[1]);
   color[0] = (x_206 + float(x_201));
@@ -941,9 +941,9 @@
   uv[0] = 0.0f;
   uv[0] = x_778;
   QuicksortObject const x_779 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_59 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_60 = {.numbers=tint_symbol_59};
-  *(tint_symbol_84) = tint_symbol_60;
+  tint_array_wrapper const tint_symbol_58 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_59 = {.numbers=tint_symbol_58};
+  *(tint_symbol_84) = tint_symbol_59;
   *(tint_symbol_84) = x_779;
   if ((x_210 > 0.25f)) {
     int const x_780 = i_2;
@@ -958,18 +958,18 @@
     uv[0] = x_782;
     int const x_216 = (*(tint_symbol_84)).numbers.arr[1];
     QuicksortObject const x_783 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_61 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_62 = {.numbers=tint_symbol_61};
-    *(tint_symbol_84) = tint_symbol_62;
+    tint_array_wrapper const tint_symbol_60 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_61 = {.numbers=tint_symbol_60};
+    *(tint_symbol_84) = tint_symbol_61;
     *(tint_symbol_84) = x_783;
     float2 const x_457 = float2(x_454[0], x_454[0]);
     float2 const x_784 = uv;
     uv = float2(0.0f, 0.0f);
     uv = x_784;
     QuicksortObject const x_785 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_63 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_64 = {.numbers=tint_symbol_63};
-    *(tint_symbol_84) = tint_symbol_64;
+    tint_array_wrapper const tint_symbol_62 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62};
+    *(tint_symbol_84) = tint_symbol_63;
     *(tint_symbol_84) = x_785;
     float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2()[1]);
     int const x_786 = i_2;
@@ -1087,9 +1087,9 @@
     color[0] = 0.0f;
     color[0] = x_816;
     QuicksortObject const x_817 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_65 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_66 = {.numbers=tint_symbol_65};
-    *(tint_symbol_84) = tint_symbol_66;
+    tint_array_wrapper const tint_symbol_64 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_65 = {.numbers=tint_symbol_64};
+    *(tint_symbol_84) = tint_symbol_65;
     *(tint_symbol_84) = x_817;
     float3 const x_468 = float3(x_467[0], x_467[0], x_467[0]);
     float const x_818 = uv[0];
@@ -1198,9 +1198,9 @@
     uv[0] = x_844;
     float3 const x_482 = float3(x_455[0], x_475[1], x_455[1]);
     QuicksortObject const x_845 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_67 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_68 = {.numbers=tint_symbol_67};
-    *(tint_symbol_84) = tint_symbol_68;
+    tint_array_wrapper const tint_symbol_66 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_67 = {.numbers=tint_symbol_66};
+    *(tint_symbol_84) = tint_symbol_67;
     *(tint_symbol_84) = x_845;
     float const x_846 = uv[1];
     uv[1] = 0.0f;
@@ -1271,9 +1271,9 @@
     (*(tint_symbol_84)).numbers.arr[6u] = x_863;
     float2 const x_490 = float2(x_480[2], x_480[2]);
     QuicksortObject const x_864 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_69 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_70 = {.numbers=tint_symbol_69};
-    *(tint_symbol_84) = tint_symbol_70;
+    tint_array_wrapper const tint_symbol_68 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_69 = {.numbers=tint_symbol_68};
+    *(tint_symbol_84) = tint_symbol_69;
     *(tint_symbol_84) = x_864;
     color[1] = (float(x_280) + x_283);
     float const x_865 = color[0];
@@ -1290,9 +1290,9 @@
   color[0] = x_867;
   float const x_287 = uv[1];
   QuicksortObject const x_868 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_71 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_72 = {.numbers=tint_symbol_71};
-  *(tint_symbol_84) = tint_symbol_72;
+  tint_array_wrapper const tint_symbol_70 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_71 = {.numbers=tint_symbol_70};
+  *(tint_symbol_84) = tint_symbol_71;
   *(tint_symbol_84) = x_868;
   float2 const x_493 = float2(x_475[0], x_475[1]);
   float const x_869 = uv[0];
@@ -1452,9 +1452,9 @@
     uv[0] = 0.0f;
     uv[0] = x_910;
     QuicksortObject const x_911 = *(tint_symbol_84);
-    tint_array_wrapper const tint_symbol_73 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    QuicksortObject const tint_symbol_74 = {.numbers=tint_symbol_73};
-    *(tint_symbol_84) = tint_symbol_74;
+    tint_array_wrapper const tint_symbol_72 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    QuicksortObject const tint_symbol_73 = {.numbers=tint_symbol_72};
+    *(tint_symbol_84) = tint_symbol_73;
     *(tint_symbol_84) = x_911;
     float3 const x_513 = float3(x_505[2], x_505[0], x_448[0]);
     int const x_912 = (*(tint_symbol_84)).numbers.arr[8];
@@ -1506,14 +1506,14 @@
   uv[0] = 0.0f;
   uv[0] = x_923;
   QuicksortObject const x_924 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_75 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_76 = {.numbers=tint_symbol_75};
-  *(tint_symbol_84) = tint_symbol_76;
+  tint_array_wrapper const tint_symbol_74 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_75 = {.numbers=tint_symbol_74};
+  *(tint_symbol_84) = tint_symbol_75;
   *(tint_symbol_84) = x_924;
   QuicksortObject const x_925 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_77 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_78 = {.numbers=tint_symbol_77};
-  *(tint_symbol_84) = tint_symbol_78;
+  tint_array_wrapper const tint_symbol_76 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_77 = {.numbers=tint_symbol_76};
+  *(tint_symbol_84) = tint_symbol_77;
   *(tint_symbol_84) = x_925;
   float const x_926 = color[1];
   color[1] = 0.0f;
@@ -1532,9 +1532,9 @@
   uv[0] = x_929;
   *(tint_symbol_87) = x_330;
   QuicksortObject const x_930 = *(tint_symbol_84);
-  tint_array_wrapper const tint_symbol_79 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  QuicksortObject const tint_symbol_80 = {.numbers=tint_symbol_79};
-  *(tint_symbol_84) = tint_symbol_80;
+  tint_array_wrapper const tint_symbol_78 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  QuicksortObject const tint_symbol_79 = {.numbers=tint_symbol_78};
+  *(tint_symbol_84) = tint_symbol_79;
   *(tint_symbol_84) = x_930;
   float3 const x_522 = float3(x_330[3], x_330[1], x_493[0]);
   float const x_931 = color[0];
@@ -1554,8 +1554,8 @@
 main_out tint_symbol_inner(float4 gl_FragCoord_param, thread float4* const tint_symbol_88, thread QuicksortObject* const tint_symbol_89, const constant buf0* const tint_symbol_90, thread float4* const tint_symbol_91) {
   *(tint_symbol_88) = gl_FragCoord_param;
   main_1(tint_symbol_89, tint_symbol_88, tint_symbol_90, tint_symbol_91);
-  main_out const tint_symbol_2 = {.x_GLF_color_1=*(tint_symbol_91)};
-  return tint_symbol_2;
+  main_out const tint_symbol_80 = {.x_GLF_color_1=*(tint_symbol_91)};
+  return tint_symbol_80;
 }
 
 fragment tint_symbol_1 tint_symbol(const constant buf0* tint_symbol_94 [[buffer(0)]], float4 gl_FragCoord_param [[position]]) {
diff --git a/test/tint/bug/tint/913.wgsl.expected.glsl b/test/tint/bug/tint/913.wgsl.expected.glsl
index 93fb38b..bd770ef 100644
--- a/test/tint/bug/tint/913.wgsl.expected.glsl
+++ b/test/tint/bug/tint/913.wgsl.expected.glsl
@@ -57,33 +57,33 @@
     vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0);
     vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0);
     if ((uniforms.channelCount == 2u)) {
-      bool tint_tmp_5 = success;
-      if (tint_tmp_5) {
-        tint_tmp_5 = aboutEqual(dstColor.r, srcColor.r);
+      bool tint_symbol_3 = success;
+      if (tint_symbol_3) {
+        tint_symbol_3 = aboutEqual(dstColor.r, srcColor.r);
       }
-      bool tint_tmp_4 = (tint_tmp_5);
-      if (tint_tmp_4) {
-        tint_tmp_4 = aboutEqual(dstColor.g, srcColor.g);
+      bool tint_symbol_2 = tint_symbol_3;
+      if (tint_symbol_2) {
+        tint_symbol_2 = aboutEqual(dstColor.g, srcColor.g);
       }
-      success = (tint_tmp_4);
+      success = tint_symbol_2;
     } else {
-      bool tint_tmp_9 = success;
-      if (tint_tmp_9) {
-        tint_tmp_9 = aboutEqual(dstColor.r, srcColor.r);
+      bool tint_symbol_7 = success;
+      if (tint_symbol_7) {
+        tint_symbol_7 = aboutEqual(dstColor.r, srcColor.r);
       }
-      bool tint_tmp_8 = (tint_tmp_9);
-      if (tint_tmp_8) {
-        tint_tmp_8 = aboutEqual(dstColor.g, srcColor.g);
+      bool tint_symbol_6 = tint_symbol_7;
+      if (tint_symbol_6) {
+        tint_symbol_6 = aboutEqual(dstColor.g, srcColor.g);
       }
-      bool tint_tmp_7 = (tint_tmp_8);
-      if (tint_tmp_7) {
-        tint_tmp_7 = aboutEqual(dstColor.b, srcColor.b);
+      bool tint_symbol_5 = tint_symbol_6;
+      if (tint_symbol_5) {
+        tint_symbol_5 = aboutEqual(dstColor.b, srcColor.b);
       }
-      bool tint_tmp_6 = (tint_tmp_7);
-      if (tint_tmp_6) {
-        tint_tmp_6 = aboutEqual(dstColor.a, srcColor.a);
+      bool tint_symbol_4 = tint_symbol_5;
+      if (tint_symbol_4) {
+        tint_symbol_4 = aboutEqual(dstColor.a, srcColor.a);
       }
-      success = (tint_tmp_6);
+      success = tint_symbol_4;
     }
   }
   uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);
diff --git a/test/tint/bug/tint/913.wgsl.expected.hlsl b/test/tint/bug/tint/913.wgsl.expected.hlsl
index 5b4116c..2c8eb01 100644
--- a/test/tint/bug/tint/913.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.hlsl
@@ -49,33 +49,33 @@
     const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
     const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
     if ((uniforms[0].y == 2u)) {
-      bool tint_tmp_7 = success;
-      if (tint_tmp_7) {
-        tint_tmp_7 = aboutEqual(dstColor.r, srcColor.r);
+      bool tint_symbol_4 = success;
+      if (tint_symbol_4) {
+        tint_symbol_4 = aboutEqual(dstColor.r, srcColor.r);
       }
-      bool tint_tmp_6 = (tint_tmp_7);
-      if (tint_tmp_6) {
-        tint_tmp_6 = aboutEqual(dstColor.g, srcColor.g);
+      bool tint_symbol_3 = tint_symbol_4;
+      if (tint_symbol_3) {
+        tint_symbol_3 = aboutEqual(dstColor.g, srcColor.g);
       }
-      success = (tint_tmp_6);
+      success = tint_symbol_3;
     } else {
-      bool tint_tmp_11 = success;
-      if (tint_tmp_11) {
-        tint_tmp_11 = aboutEqual(dstColor.r, srcColor.r);
+      bool tint_symbol_8 = success;
+      if (tint_symbol_8) {
+        tint_symbol_8 = aboutEqual(dstColor.r, srcColor.r);
       }
-      bool tint_tmp_10 = (tint_tmp_11);
-      if (tint_tmp_10) {
-        tint_tmp_10 = aboutEqual(dstColor.g, srcColor.g);
+      bool tint_symbol_7 = tint_symbol_8;
+      if (tint_symbol_7) {
+        tint_symbol_7 = aboutEqual(dstColor.g, srcColor.g);
       }
-      bool tint_tmp_9 = (tint_tmp_10);
-      if (tint_tmp_9) {
-        tint_tmp_9 = aboutEqual(dstColor.b, srcColor.b);
+      bool tint_symbol_6 = tint_symbol_7;
+      if (tint_symbol_6) {
+        tint_symbol_6 = aboutEqual(dstColor.b, srcColor.b);
       }
-      bool tint_tmp_8 = (tint_tmp_9);
-      if (tint_tmp_8) {
-        tint_tmp_8 = aboutEqual(dstColor.a, srcColor.a);
+      bool tint_symbol_5 = tint_symbol_6;
+      if (tint_symbol_5) {
+        tint_symbol_5 = aboutEqual(dstColor.a, srcColor.a);
       }
-      success = (tint_tmp_8);
+      success = tint_symbol_5;
     }
   }
   const uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);
diff --git a/test/tint/bug/tint/913.wgsl.expected.msl b/test/tint/bug/tint/913.wgsl.expected.msl
index a4903fc..5de26db 100644
--- a/test/tint/bug/tint/913.wgsl.expected.msl
+++ b/test/tint/bug/tint/913.wgsl.expected.msl
@@ -17,37 +17,61 @@
   return (fabs((value - expect)) < 0.001f);
 }
 
-void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, device OutputBuf* const tint_symbol_4) {
-  int2 const srcSize = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
-  int2 const dstSize = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
+void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, const constant Uniforms* const tint_symbol_9, device OutputBuf* const tint_symbol_10) {
+  int2 const srcSize = int2(tint_symbol_7.get_width(), tint_symbol_7.get_height());
+  int2 const dstSize = int2(tint_symbol_8.get_width(), tint_symbol_8.get_height());
   uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy);
   float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
-  if (((((dstTexCoord[0] < (*(tint_symbol_3)).dstCopyOrigin[0]) || (dstTexCoord[1] < (*(tint_symbol_3)).dstCopyOrigin[1])) || (dstTexCoord[0] >= ((*(tint_symbol_3)).dstCopyOrigin[0] + (*(tint_symbol_3)).copySize[0]))) || (dstTexCoord[1] >= ((*(tint_symbol_3)).dstCopyOrigin[1] + (*(tint_symbol_3)).copySize[1])))) {
-    success = (success && all((tint_symbol_2.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
+  if (((((dstTexCoord[0] < (*(tint_symbol_9)).dstCopyOrigin[0]) || (dstTexCoord[1] < (*(tint_symbol_9)).dstCopyOrigin[1])) || (dstTexCoord[0] >= ((*(tint_symbol_9)).dstCopyOrigin[0] + (*(tint_symbol_9)).copySize[0]))) || (dstTexCoord[1] >= ((*(tint_symbol_9)).dstCopyOrigin[1] + (*(tint_symbol_9)).copySize[1])))) {
+    success = (success && all((tint_symbol_8.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
   } else {
-    uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_3)).dstCopyOrigin) + (*(tint_symbol_3)).srcCopyOrigin);
-    if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) {
+    uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_9)).dstCopyOrigin) + (*(tint_symbol_9)).srcCopyOrigin);
+    if (((*(tint_symbol_9)).dstTextureFlipY == 1u)) {
       srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u);
     }
-    float4 const srcColor = tint_symbol_1.read(uint2(int2(srcTexCoord)), 0);
-    float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0);
-    if (((*(tint_symbol_3)).channelCount == 2u)) {
-      success = ((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1]));
+    float4 const srcColor = tint_symbol_7.read(uint2(int2(srcTexCoord)), 0);
+    float4 const dstColor = tint_symbol_8.read(uint2(int2(dstTexCoord)), 0);
+    if (((*(tint_symbol_9)).channelCount == 2u)) {
+      bool tint_symbol_2 = success;
+      if (tint_symbol_2) {
+        tint_symbol_2 = aboutEqual(dstColor[0], srcColor[0]);
+      }
+      bool tint_symbol_1 = tint_symbol_2;
+      if (tint_symbol_1) {
+        tint_symbol_1 = aboutEqual(dstColor[1], srcColor[1]);
+      }
+      success = tint_symbol_1;
     } else {
-      success = ((((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])) && aboutEqual(dstColor[2], srcColor[2])) && aboutEqual(dstColor[3], srcColor[3]));
+      bool tint_symbol_6 = success;
+      if (tint_symbol_6) {
+        tint_symbol_6 = aboutEqual(dstColor[0], srcColor[0]);
+      }
+      bool tint_symbol_5 = tint_symbol_6;
+      if (tint_symbol_5) {
+        tint_symbol_5 = aboutEqual(dstColor[1], srcColor[1]);
+      }
+      bool tint_symbol_4 = tint_symbol_5;
+      if (tint_symbol_4) {
+        tint_symbol_4 = aboutEqual(dstColor[2], srcColor[2]);
+      }
+      bool tint_symbol_3 = tint_symbol_4;
+      if (tint_symbol_3) {
+        tint_symbol_3 = aboutEqual(dstColor[3], srcColor[3]);
+      }
+      success = tint_symbol_3;
     }
   }
   uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]);
   if (success) {
-    (*(tint_symbol_4)).result[outputIndex] = 1u;
+    (*(tint_symbol_10)).result[outputIndex] = 1u;
   } else {
-    (*(tint_symbol_4)).result[outputIndex] = 0u;
+    (*(tint_symbol_10)).result[outputIndex] = 0u;
   }
 }
 
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_5 [[texture(0)]], texture2d<float, access::sample> tint_symbol_6 [[texture(1)]], const constant Uniforms* tint_symbol_7 [[buffer(0)]], device OutputBuf* tint_symbol_8 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
-  tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
+kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_11 [[texture(0)]], texture2d<float, access::sample> tint_symbol_12 [[texture(1)]], const constant Uniforms* tint_symbol_13 [[buffer(0)]], device OutputBuf* tint_symbol_14 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+  tint_symbol_inner(GlobalInvocationID, tint_symbol_11, tint_symbol_12, tint_symbol_13, tint_symbol_14);
   return;
 }
 
diff --git a/test/tint/bug/tint/913.wgsl.expected.spvasm b/test/tint/bug/tint/913.wgsl.expected.spvasm
index f34ef94..73b58b3 100644
--- a/test/tint/bug/tint/913.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/913.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 193
+; Bound: 205
 ; Schema: 0
                OpCapability Shader
                OpCapability ImageQuery
@@ -29,6 +29,12 @@
                OpName %GlobalInvocationID "GlobalInvocationID"
                OpName %success "success"
                OpName %srcTexCoord "srcTexCoord"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_2 "tint_symbol_2"
                OpName %main "main"
                OpDecorate %GlobalInvocationID_1 BuiltIn GlobalInvocationId
                OpDecorate %src DescriptorSet 0
@@ -93,7 +99,7 @@
         %110 = OpConstantNull %v2uint
 %_ptr_Function_uint = OpTypePointer Function %uint
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
-        %188 = OpTypeFunction %void
+        %200 = OpTypeFunction %void
  %aboutEqual = OpFunction %bool None %18
       %value = OpFunctionParameter %float
      %expect = OpFunctionParameter %float
@@ -108,6 +114,12 @@
          %33 = OpLabel
     %success = OpVariable %_ptr_Function_bool Function %50
 %srcTexCoord = OpVariable %_ptr_Function_v2uint Function %110
+%tint_symbol_1 = OpVariable %_ptr_Function_bool Function %50
+%tint_symbol = OpVariable %_ptr_Function_bool Function %50
+%tint_symbol_5 = OpVariable %_ptr_Function_bool Function %50
+%tint_symbol_4 = OpVariable %_ptr_Function_bool Function %50
+%tint_symbol_3 = OpVariable %_ptr_Function_bool Function %50
+%tint_symbol_2 = OpVariable %_ptr_Function_bool Function %50
          %37 = OpLoad %7 %src
          %34 = OpImageQuerySizeLod %v2int %37 %int_0
          %40 = OpLoad %7 %dst
@@ -209,92 +221,110 @@
                OpBranchConditional %133 %135 %136
         %135 = OpLabel
         %137 = OpLoad %bool %success
-               OpSelectionMerge %138 None
-               OpBranchConditional %137 %139 %138
-        %139 = OpLabel
-        %141 = OpCompositeExtract %float %128 0
-        %142 = OpCompositeExtract %float %124 0
-        %140 = OpFunctionCall %bool %aboutEqual %141 %142
-               OpBranch %138
-        %138 = OpLabel
-        %143 = OpPhi %bool %137 %135 %140 %139
-               OpSelectionMerge %144 None
-               OpBranchConditional %143 %145 %144
-        %145 = OpLabel
-        %147 = OpCompositeExtract %float %128 1
-        %148 = OpCompositeExtract %float %124 1
-        %146 = OpFunctionCall %bool %aboutEqual %147 %148
-               OpBranch %144
-        %144 = OpLabel
-        %149 = OpPhi %bool %143 %138 %146 %145
-               OpStore %success %149
+               OpStore %tint_symbol_1 %137
+        %139 = OpLoad %bool %tint_symbol_1
+               OpSelectionMerge %140 None
+               OpBranchConditional %139 %141 %140
+        %141 = OpLabel
+        %143 = OpCompositeExtract %float %128 0
+        %144 = OpCompositeExtract %float %124 0
+        %142 = OpFunctionCall %bool %aboutEqual %143 %144
+               OpStore %tint_symbol_1 %142
+               OpBranch %140
+        %140 = OpLabel
+        %145 = OpLoad %bool %tint_symbol_1
+               OpStore %tint_symbol %145
+        %147 = OpLoad %bool %tint_symbol
+               OpSelectionMerge %148 None
+               OpBranchConditional %147 %149 %148
+        %149 = OpLabel
+        %151 = OpCompositeExtract %float %128 1
+        %152 = OpCompositeExtract %float %124 1
+        %150 = OpFunctionCall %bool %aboutEqual %151 %152
+               OpStore %tint_symbol %150
+               OpBranch %148
+        %148 = OpLabel
+        %153 = OpLoad %bool %tint_symbol
+               OpStore %success %153
                OpBranch %134
         %136 = OpLabel
-        %150 = OpLoad %bool %success
-               OpSelectionMerge %151 None
-               OpBranchConditional %150 %152 %151
-        %152 = OpLabel
-        %154 = OpCompositeExtract %float %128 0
-        %155 = OpCompositeExtract %float %124 0
-        %153 = OpFunctionCall %bool %aboutEqual %154 %155
-               OpBranch %151
-        %151 = OpLabel
-        %156 = OpPhi %bool %150 %136 %153 %152
+        %154 = OpLoad %bool %success
+               OpStore %tint_symbol_5 %154
+        %156 = OpLoad %bool %tint_symbol_5
                OpSelectionMerge %157 None
                OpBranchConditional %156 %158 %157
         %158 = OpLabel
-        %160 = OpCompositeExtract %float %128 1
-        %161 = OpCompositeExtract %float %124 1
+        %160 = OpCompositeExtract %float %128 0
+        %161 = OpCompositeExtract %float %124 0
         %159 = OpFunctionCall %bool %aboutEqual %160 %161
+               OpStore %tint_symbol_5 %159
                OpBranch %157
         %157 = OpLabel
-        %162 = OpPhi %bool %156 %151 %159 %158
-               OpSelectionMerge %163 None
-               OpBranchConditional %162 %164 %163
-        %164 = OpLabel
-        %166 = OpCompositeExtract %float %128 2
-        %167 = OpCompositeExtract %float %124 2
-        %165 = OpFunctionCall %bool %aboutEqual %166 %167
-               OpBranch %163
-        %163 = OpLabel
-        %168 = OpPhi %bool %162 %157 %165 %164
-               OpSelectionMerge %169 None
-               OpBranchConditional %168 %170 %169
-        %170 = OpLabel
-        %172 = OpCompositeExtract %float %128 3
-        %173 = OpCompositeExtract %float %124 3
-        %171 = OpFunctionCall %bool %aboutEqual %172 %173
-               OpBranch %169
-        %169 = OpLabel
-        %174 = OpPhi %bool %168 %163 %171 %170
-               OpStore %success %174
+        %162 = OpLoad %bool %tint_symbol_5
+               OpStore %tint_symbol_4 %162
+        %164 = OpLoad %bool %tint_symbol_4
+               OpSelectionMerge %165 None
+               OpBranchConditional %164 %166 %165
+        %166 = OpLabel
+        %168 = OpCompositeExtract %float %128 1
+        %169 = OpCompositeExtract %float %124 1
+        %167 = OpFunctionCall %bool %aboutEqual %168 %169
+               OpStore %tint_symbol_4 %167
+               OpBranch %165
+        %165 = OpLabel
+        %170 = OpLoad %bool %tint_symbol_4
+               OpStore %tint_symbol_3 %170
+        %172 = OpLoad %bool %tint_symbol_3
+               OpSelectionMerge %173 None
+               OpBranchConditional %172 %174 %173
+        %174 = OpLabel
+        %176 = OpCompositeExtract %float %128 2
+        %177 = OpCompositeExtract %float %124 2
+        %175 = OpFunctionCall %bool %aboutEqual %176 %177
+               OpStore %tint_symbol_3 %175
+               OpBranch %173
+        %173 = OpLabel
+        %178 = OpLoad %bool %tint_symbol_3
+               OpStore %tint_symbol_2 %178
+        %180 = OpLoad %bool %tint_symbol_2
+               OpSelectionMerge %181 None
+               OpBranchConditional %180 %182 %181
+        %182 = OpLabel
+        %184 = OpCompositeExtract %float %128 3
+        %185 = OpCompositeExtract %float %124 3
+        %183 = OpFunctionCall %bool %aboutEqual %184 %185
+               OpStore %tint_symbol_2 %183
+               OpBranch %181
+        %181 = OpLabel
+        %186 = OpLoad %bool %tint_symbol_2
+               OpStore %success %186
                OpBranch %134
         %134 = OpLabel
                OpBranch %87
          %87 = OpLabel
-        %175 = OpCompositeExtract %uint %GlobalInvocationID 1
-        %177 = OpCompositeExtract %int %39 0
-        %176 = OpBitcast %uint %177
-        %178 = OpIMul %uint %175 %176
-        %179 = OpCompositeExtract %uint %GlobalInvocationID 0
-        %180 = OpIAdd %uint %178 %179
-        %181 = OpLoad %bool %success
-               OpSelectionMerge %182 None
-               OpBranchConditional %181 %183 %184
-        %183 = OpLabel
-        %186 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %180
-               OpStore %186 %uint_1
-               OpBranch %182
-        %184 = OpLabel
-        %187 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %180
-               OpStore %187 %uint_0
-               OpBranch %182
-        %182 = OpLabel
+        %187 = OpCompositeExtract %uint %GlobalInvocationID 1
+        %189 = OpCompositeExtract %int %39 0
+        %188 = OpBitcast %uint %189
+        %190 = OpIMul %uint %187 %188
+        %191 = OpCompositeExtract %uint %GlobalInvocationID 0
+        %192 = OpIAdd %uint %190 %191
+        %193 = OpLoad %bool %success
+               OpSelectionMerge %194 None
+               OpBranchConditional %193 %195 %196
+        %195 = OpLabel
+        %198 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192
+               OpStore %198 %uint_1
+               OpBranch %194
+        %196 = OpLabel
+        %199 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192
+               OpStore %199 %uint_0
+               OpBranch %194
+        %194 = OpLabel
                OpReturn
                OpFunctionEnd
-       %main = OpFunction %void None %188
-        %190 = OpLabel
-        %192 = OpLoad %v3uint %GlobalInvocationID_1
-        %191 = OpFunctionCall %void %main_inner %192
+       %main = OpFunction %void None %200
+        %202 = OpLabel
+        %204 = OpLoad %v3uint %GlobalInvocationID_1
+        %203 = OpFunctionCall %void %main_inner %204
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/bug/tint/914.wgsl.expected.glsl b/test/tint/bug/tint/914.wgsl.expected.glsl
index 0ec1794..5ec38c1 100644
--- a/test/tint/bug/tint/914.wgsl.expected.glsl
+++ b/test/tint/bug/tint/914.wgsl.expected.glsl
@@ -96,7 +96,8 @@
             for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
               uint inputRow = (tileRow + innerRow);
               uint inputCol = (tileColA + innerCol);
-              mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
+              float tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
+              mm_Asub[inputRow][inputCol] = tint_symbol_1;
             }
           }
         }
@@ -107,7 +108,8 @@
             for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
               uint inputRow = (tileRowB + innerRow);
               uint inputCol = (tileCol + innerCol);
-              mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
+              float tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
+              mm_Bsub[innerCol][inputCol] = tint_symbol_2;
             }
           }
         }
diff --git a/test/tint/bug/tint/914.wgsl.expected.hlsl b/test/tint/bug/tint/914.wgsl.expected.hlsl
index 4c2e060..6e88dc0 100644
--- a/test/tint/bug/tint/914.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/914.wgsl.expected.hlsl
@@ -89,7 +89,8 @@
             [loop] for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRow + innerRow);
               const uint inputCol = (tileColA + innerCol);
-              mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
+              const float tint_symbol_2 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
+              mm_Asub[inputRow][inputCol] = tint_symbol_2;
             }
           }
         }
@@ -100,7 +101,8 @@
             [loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRowB + innerRow);
               const uint inputCol = (tileCol + innerCol);
-              mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
+              const float tint_symbol_3 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
+              mm_Bsub[innerCol][inputCol] = tint_symbol_3;
             }
           }
         }
diff --git a/test/tint/bug/tint/914.wgsl.expected.msl b/test/tint/bug/tint/914.wgsl.expected.msl
index 1590167..2321c84 100644
--- a/test/tint/bug/tint/914.wgsl.expected.msl
+++ b/test/tint/bug/tint/914.wgsl.expected.msl
@@ -11,26 +11,26 @@
   /* 0x0000 */ float numbers[1];
 };
 
-float mm_readA(uint row, uint col, const constant Uniforms* const tint_symbol_1, const device Matrix* const tint_symbol_2) {
-  if (((row < (*(tint_symbol_1)).dimAOuter) && (col < (*(tint_symbol_1)).dimInner))) {
-    float const result = (*(tint_symbol_2)).numbers[((row * (*(tint_symbol_1)).dimInner) + col)];
+float mm_readA(uint row, uint col, const constant Uniforms* const tint_symbol_3, const device Matrix* const tint_symbol_4) {
+  if (((row < (*(tint_symbol_3)).dimAOuter) && (col < (*(tint_symbol_3)).dimInner))) {
+    float const result = (*(tint_symbol_4)).numbers[((row * (*(tint_symbol_3)).dimInner) + col)];
     return result;
   }
   return 0.0f;
 }
 
-float mm_readB(uint row, uint col, const constant Uniforms* const tint_symbol_3, const device Matrix* const tint_symbol_4) {
-  if (((row < (*(tint_symbol_3)).dimInner) && (col < (*(tint_symbol_3)).dimBOuter))) {
-    float const result = (*(tint_symbol_4)).numbers[((row * (*(tint_symbol_3)).dimBOuter) + col)];
+float mm_readB(uint row, uint col, const constant Uniforms* const tint_symbol_5, const device Matrix* const tint_symbol_6) {
+  if (((row < (*(tint_symbol_5)).dimInner) && (col < (*(tint_symbol_5)).dimBOuter))) {
+    float const result = (*(tint_symbol_6)).numbers[((row * (*(tint_symbol_5)).dimBOuter) + col)];
     return result;
   }
   return 0.0f;
 }
 
-void mm_write(uint row, uint col, float value, const constant Uniforms* const tint_symbol_5, device Matrix* const tint_symbol_6) {
-  if (((row < (*(tint_symbol_5)).dimAOuter) && (col < (*(tint_symbol_5)).dimBOuter))) {
-    uint const index = (col + (row * (*(tint_symbol_5)).dimBOuter));
-    (*(tint_symbol_6)).numbers[index] = value;
+void mm_write(uint row, uint col, float value, const constant Uniforms* const tint_symbol_7, device Matrix* const tint_symbol_8) {
+  if (((row < (*(tint_symbol_7)).dimAOuter) && (col < (*(tint_symbol_7)).dimBOuter))) {
+    uint const index = (col + (row * (*(tint_symbol_7)).dimBOuter));
+    (*(tint_symbol_8)).numbers[index] = value;
   }
 }
 
@@ -60,19 +60,19 @@
   float arr[4];
 };
 
-void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_7, threadgroup tint_array_wrapper* const tint_symbol_8, const constant Uniforms* const tint_symbol_9, const device Matrix* const tint_symbol_10, const device Matrix* const tint_symbol_11, device Matrix* const tint_symbol_12) {
+void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_9, threadgroup tint_array_wrapper* const tint_symbol_10, const constant Uniforms* const tint_symbol_11, const device Matrix* const tint_symbol_12, const device Matrix* const tint_symbol_13, device Matrix* const tint_symbol_14) {
   for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) {
     uint const i = (idx / 64u);
     uint const i_1 = (idx % 64u);
-    (*(tint_symbol_7)).arr[i].arr[i_1] = float();
-    (*(tint_symbol_8)).arr[i].arr[i_1] = float();
+    (*(tint_symbol_9)).arr[i].arr[i_1] = float();
+    (*(tint_symbol_10)).arr[i].arr[i_1] = float();
   }
   threadgroup_barrier(mem_flags::mem_threadgroup);
   uint const tileRow = (local_id[1] * RowPerThread);
   uint const tileCol = (local_id[0] * ColPerThread);
   uint const globalRow = (global_id[1] * RowPerThread);
   uint const globalCol = (global_id[0] * ColPerThread);
-  uint const numTiles = ((((*(tint_symbol_9)).dimInner - 1u) / TileInner) + 1u);
+  uint const numTiles = ((((*(tint_symbol_11)).dimInner - 1u) / TileInner) + 1u);
   tint_array_wrapper_2 acc = {};
   float ACached = 0.0f;
   tint_array_wrapper_3 BCached = {};
@@ -88,23 +88,25 @@
       for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
         uint const inputRow = (tileRow + innerRow);
         uint const inputCol = (tileColA + innerCol);
-        (*(tint_symbol_7)).arr[inputRow].arr[inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_9, tint_symbol_10);
+        float const tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_11, tint_symbol_12);
+        (*(tint_symbol_9)).arr[inputRow].arr[inputCol] = tint_symbol_1;
       }
     }
     for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
       for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
         uint const inputRow = (tileRowB + innerRow);
         uint const inputCol = (tileCol + innerCol);
-        (*(tint_symbol_8)).arr[innerCol].arr[inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_9, tint_symbol_11);
+        float const tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_11, tint_symbol_13);
+        (*(tint_symbol_10)).arr[innerCol].arr[inputCol] = tint_symbol_2;
       }
     }
     threadgroup_barrier(mem_flags::mem_threadgroup);
     for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
       for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
-        BCached.arr[inner] = (*(tint_symbol_8)).arr[k].arr[(tileCol + inner)];
+        BCached.arr[inner] = (*(tint_symbol_10)).arr[k].arr[(tileCol + inner)];
       }
       for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
-        ACached = (*(tint_symbol_7)).arr[(tileRow + innerRow)].arr[k];
+        ACached = (*(tint_symbol_9)).arr[(tileRow + innerRow)].arr[k];
         for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
           uint const index = ((innerRow * ColPerThread) + innerCol);
           acc.arr[index] = (acc.arr[index] + (ACached * BCached.arr[innerCol]));
@@ -116,15 +118,15 @@
   for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
     for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
       uint const index = ((innerRow * ColPerThread) + innerCol);
-      mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index], tint_symbol_9, tint_symbol_12);
+      mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index], tint_symbol_11, tint_symbol_14);
     }
   }
 }
 
-kernel void tint_symbol(const constant Uniforms* tint_symbol_15 [[buffer(0)]], const device Matrix* tint_symbol_16 [[buffer(2)]], const device Matrix* tint_symbol_17 [[buffer(3)]], device Matrix* tint_symbol_18 [[buffer(1)]], uint3 local_id [[thread_position_in_threadgroup]], uint3 global_id [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
-  threadgroup tint_array_wrapper tint_symbol_13;
-  threadgroup tint_array_wrapper tint_symbol_14;
-  tint_symbol_inner(local_id, global_id, local_invocation_index, &(tint_symbol_13), &(tint_symbol_14), tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18);
+kernel void tint_symbol(const constant Uniforms* tint_symbol_17 [[buffer(0)]], const device Matrix* tint_symbol_18 [[buffer(2)]], const device Matrix* tint_symbol_19 [[buffer(3)]], device Matrix* tint_symbol_20 [[buffer(1)]], uint3 local_id [[thread_position_in_threadgroup]], uint3 global_id [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+  threadgroup tint_array_wrapper tint_symbol_15;
+  threadgroup tint_array_wrapper tint_symbol_16;
+  tint_symbol_inner(local_id, global_id, local_invocation_index, &(tint_symbol_15), &(tint_symbol_16), tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20);
   return;
 }
 
diff --git a/test/tint/bug/tint/914.wgsl.expected.spvasm b/test/tint/bug/tint/914.wgsl.expected.spvasm
index 5c4ef44..48ce37e 100644
--- a/test/tint/bug/tint/914.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/914.wgsl.expected.spvasm
@@ -364,14 +364,14 @@
         %206 = OpIAdd %uint %131 %205
         %207 = OpLoad %uint %innerCol
         %208 = OpIAdd %uint %171 %207
-        %209 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %206 %208
-        %211 = OpLoad %uint %innerRow
-        %212 = OpIAdd %uint %135 %211
-        %213 = OpLoad %uint %t
-        %214 = OpIMul %uint %213 %TileAOuter
-        %215 = OpIAdd %uint %214 %208
-        %210 = OpFunctionCall %float %mm_readA %212 %215
-               OpStore %209 %210
+        %210 = OpLoad %uint %innerRow
+        %211 = OpIAdd %uint %135 %210
+        %212 = OpLoad %uint %t
+        %213 = OpIMul %uint %212 %TileAOuter
+        %214 = OpIAdd %uint %213 %208
+        %209 = OpFunctionCall %float %mm_readA %211 %214
+        %215 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %206 %208
+               OpStore %215 %209
                OpBranch %198
         %198 = OpLabel
         %216 = OpLoad %uint %innerCol
@@ -418,15 +418,15 @@
         %241 = OpIAdd %uint %174 %240
         %242 = OpLoad %uint %innerCol_0
         %243 = OpIAdd %uint %133 %242
-        %244 = OpLoad %uint %innerCol_0
-        %245 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %244 %243
-        %247 = OpLoad %uint %t
-        %248 = OpIMul %uint %247 %TileAOuter
-        %249 = OpIAdd %uint %248 %241
+        %245 = OpLoad %uint %t
+        %246 = OpIMul %uint %245 %TileAOuter
+        %247 = OpIAdd %uint %246 %241
+        %248 = OpLoad %uint %innerCol_0
+        %249 = OpIAdd %uint %137 %248
+        %244 = OpFunctionCall %float %mm_readB %247 %249
         %250 = OpLoad %uint %innerCol_0
-        %251 = OpIAdd %uint %137 %250
-        %246 = OpFunctionCall %float %mm_readB %249 %251
-               OpStore %245 %246
+        %251 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %250 %243
+               OpStore %251 %244
                OpBranch %233
         %233 = OpLabel
         %252 = OpLoad %uint %innerCol_0
diff --git a/test/tint/bug/tint/980.wgsl.expected.glsl b/test/tint/bug/tint/980.wgsl.expected.glsl
index 423ba35..215481c 100644
--- a/test/tint/bug/tint/980.wgsl.expected.glsl
+++ b/test/tint/bug/tint/980.wgsl.expected.glsl
@@ -16,7 +16,8 @@
   uint i;
 } io;
 void tint_symbol(uint idx) {
-  io.v = Bad(io.i, io.v);
+  vec3 tint_symbol_1 = Bad(io.i, io.v);
+  io.v = tint_symbol_1;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/tint/980.wgsl.expected.hlsl b/test/tint/bug/tint/980.wgsl.expected.hlsl
index 73b6373..300688c 100644
--- a/test/tint/bug/tint/980.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/980.wgsl.expected.hlsl
@@ -15,7 +15,8 @@
 };
 
 void main_inner(uint idx) {
-  io.Store3(0u, asuint(Bad(io.Load(12u), asfloat(io.Load3(0u)))));
+  const float3 tint_symbol_2 = Bad(io.Load(12u), asfloat(io.Load3(0u)));
+  io.Store3(0u, asuint(tint_symbol_2));
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/bug/tint/980.wgsl.expected.msl b/test/tint/bug/tint/980.wgsl.expected.msl
index e00119b..2e23ef1 100644
--- a/test/tint/bug/tint/980.wgsl.expected.msl
+++ b/test/tint/bug/tint/980.wgsl.expected.msl
@@ -23,12 +23,13 @@
   /* 0x000c */ uint i;
 };
 
-void tint_symbol_inner(uint idx, device S* const tint_symbol_1) {
-  (*(tint_symbol_1)).v = Bad((*(tint_symbol_1)).i, (*(tint_symbol_1)).v);
+void tint_symbol_inner(uint idx, device S* const tint_symbol_2) {
+  float3 const tint_symbol_1 = Bad((*(tint_symbol_2)).i, (*(tint_symbol_2)).v);
+  (*(tint_symbol_2)).v = tint_symbol_1;
 }
 
-kernel void tint_symbol(device S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
-  tint_symbol_inner(idx, tint_symbol_2);
+kernel void tint_symbol(device S* tint_symbol_3 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
+  tint_symbol_inner(idx, tint_symbol_3);
   return;
 }
 
diff --git a/test/tint/bug/tint/980.wgsl.expected.spvasm b/test/tint/bug/tint/980.wgsl.expected.spvasm
index ee66623..b353457 100644
--- a/test/tint/bug/tint/980.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/980.wgsl.expected.spvasm
@@ -42,10 +42,10 @@
 %_ptr_Function_float = OpTypePointer Function %float
        %void = OpTypeVoid
          %27 = OpTypeFunction %void %uint
-     %uint_0 = OpConstant %uint 0
-%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
      %uint_1 = OpConstant %uint 1
 %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
          %42 = OpTypeFunction %void
         %Bad = OpFunction %v3float None %9
       %index = OpFunctionParameter %uint
@@ -65,13 +65,13 @@
  %main_inner = OpFunction %void None %27
         %idx = OpFunctionParameter %uint
          %31 = OpLabel
-         %34 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
-         %38 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1
-         %39 = OpLoad %uint %38
-         %40 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
-         %41 = OpLoad %v3float %40
-         %35 = OpFunctionCall %v3float %Bad %39 %41
-               OpStore %34 %35
+         %35 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1
+         %36 = OpLoad %uint %35
+         %39 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
+         %40 = OpLoad %v3float %39
+         %32 = OpFunctionCall %v3float %Bad %36 %40
+         %41 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
+               OpStore %41 %32
                OpReturn
                OpFunctionEnd
        %main = OpFunction %void None %42
diff --git a/test/tint/bug/tint/993.wgsl.expected.glsl b/test/tint/bug/tint/993.wgsl.expected.glsl
index fc8f672..2e4ad53 100644
--- a/test/tint/bug/tint/993.wgsl.expected.glsl
+++ b/test/tint/bug/tint/993.wgsl.expected.glsl
@@ -27,7 +27,9 @@
 }
 
 void tint_symbol() {
-  result.value = uint(runTest());
+  int tint_symbol_1 = runTest();
+  uint tint_symbol_2 = uint(tint_symbol_1);
+  result.value = tint_symbol_2;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/bug/tint/993.wgsl.expected.hlsl b/test/tint/bug/tint/993.wgsl.expected.hlsl
index 2b16fd2..d1c5d71 100644
--- a/test/tint/bug/tint/993.wgsl.expected.hlsl
+++ b/test/tint/bug/tint/993.wgsl.expected.hlsl
@@ -18,6 +18,8 @@
 
 [numthreads(1, 1, 1)]
 void main() {
-  result.Store(0u, asuint(uint(runTest())));
+  const int tint_symbol = runTest();
+  const uint tint_symbol_1 = uint(tint_symbol);
+  result.Store(0u, asuint(tint_symbol_1));
   return;
 }
diff --git a/test/tint/bug/tint/993.wgsl.expected.msl b/test/tint/bug/tint/993.wgsl.expected.msl
index f7e9d1c..98f5117 100644
--- a/test/tint/bug/tint/993.wgsl.expected.msl
+++ b/test/tint/bug/tint/993.wgsl.expected.msl
@@ -17,12 +17,14 @@
   /* 0x0000 */ tint_array_wrapper data;
 };
 
-int runTest(device TestData* const tint_symbol_1, const constant Constants* const tint_symbol_2) {
-  return atomic_load_explicit(&((*(tint_symbol_1)).data.arr[(0u + uint((*(tint_symbol_2)).zero))]), memory_order_relaxed);
+int runTest(device TestData* const tint_symbol_3, const constant Constants* const tint_symbol_4) {
+  return atomic_load_explicit(&((*(tint_symbol_3)).data.arr[(0u + uint((*(tint_symbol_4)).zero))]), memory_order_relaxed);
 }
 
-kernel void tint_symbol(device Result* tint_symbol_3 [[buffer(1)]], device TestData* tint_symbol_4 [[buffer(2)]], const constant Constants* tint_symbol_5 [[buffer(0)]]) {
-  (*(tint_symbol_3)).value = uint(runTest(tint_symbol_4, tint_symbol_5));
+kernel void tint_symbol(device TestData* tint_symbol_5 [[buffer(2)]], const constant Constants* tint_symbol_6 [[buffer(0)]], device Result* tint_symbol_7 [[buffer(1)]]) {
+  int const tint_symbol_1 = runTest(tint_symbol_5, tint_symbol_6);
+  uint const tint_symbol_2 = uint(tint_symbol_1);
+  (*(tint_symbol_7)).value = tint_symbol_2;
   return;
 }
 
diff --git a/test/tint/bug/tint/993.wgsl.expected.spvasm b/test/tint/bug/tint/993.wgsl.expected.spvasm
index 31b94d8..25bf0b5 100644
--- a/test/tint/bug/tint/993.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/993.wgsl.expected.spvasm
@@ -65,9 +65,9 @@
                OpFunctionEnd
        %main = OpFunction %void None %28
          %31 = OpLabel
-         %33 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0
-         %35 = OpFunctionCall %int %runTest
-         %34 = OpBitcast %uint %35
-               OpStore %33 %34
+         %32 = OpFunctionCall %int %runTest
+         %33 = OpBitcast %uint %32
+         %35 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0
+               OpStore %35 %33
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/expressions/splat/call/bool.wgsl.expected.glsl b/test/tint/expressions/splat/call/bool.wgsl.expected.glsl
index 1966c37..dfef30e 100644
--- a/test/tint/expressions/splat/call/bool.wgsl.expected.glsl
+++ b/test/tint/expressions/splat/call/bool.wgsl.expected.glsl
@@ -9,8 +9,11 @@
 }
 
 void f() {
-  bvec2 v2 = bvec2(get_bool());
-  bvec3 v3 = bvec3(get_bool());
-  bvec4 v4 = bvec4(get_bool());
+  bool tint_symbol = get_bool();
+  bvec2 v2 = bvec2(tint_symbol);
+  bool tint_symbol_1 = get_bool();
+  bvec3 v3 = bvec3(tint_symbol_1);
+  bool tint_symbol_2 = get_bool();
+  bvec4 v4 = bvec4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/bool.wgsl.expected.hlsl b/test/tint/expressions/splat/call/bool.wgsl.expected.hlsl
index 5291698..5a0bf4e 100644
--- a/test/tint/expressions/splat/call/bool.wgsl.expected.hlsl
+++ b/test/tint/expressions/splat/call/bool.wgsl.expected.hlsl
@@ -8,7 +8,10 @@
 }
 
 void f() {
-  bool2 v2 = bool2((get_bool()).xx);
-  bool3 v3 = bool3((get_bool()).xxx);
-  bool4 v4 = bool4((get_bool()).xxxx);
+  const bool tint_symbol = get_bool();
+  bool2 v2 = bool2((tint_symbol).xx);
+  const bool tint_symbol_1 = get_bool();
+  bool3 v3 = bool3((tint_symbol_1).xxx);
+  const bool tint_symbol_2 = get_bool();
+  bool4 v4 = bool4((tint_symbol_2).xxxx);
 }
diff --git a/test/tint/expressions/splat/call/bool.wgsl.expected.msl b/test/tint/expressions/splat/call/bool.wgsl.expected.msl
index 5ce5b99..ac10256 100644
--- a/test/tint/expressions/splat/call/bool.wgsl.expected.msl
+++ b/test/tint/expressions/splat/call/bool.wgsl.expected.msl
@@ -6,8 +6,11 @@
 }
 
 void f() {
-  bool2 v2 = bool2(get_bool());
-  bool3 v3 = bool3(get_bool());
-  bool4 v4 = bool4(get_bool());
+  bool const tint_symbol = get_bool();
+  bool2 v2 = bool2(tint_symbol);
+  bool const tint_symbol_1 = get_bool();
+  bool3 v3 = bool3(tint_symbol_1);
+  bool const tint_symbol_2 = get_bool();
+  bool4 v4 = bool4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/bool.wgsl.expected.spvasm b/test/tint/expressions/splat/call/bool.wgsl.expected.spvasm
index daa1a6e..08cba46 100644
--- a/test/tint/expressions/splat/call/bool.wgsl.expected.spvasm
+++ b/test/tint/expressions/splat/call/bool.wgsl.expected.spvasm
@@ -40,14 +40,14 @@
          %v2 = OpVariable %_ptr_Function_v2bool Function %17
          %v3 = OpVariable %_ptr_Function_v3bool Function %23
          %v4 = OpVariable %_ptr_Function_v4bool Function %29
-         %13 = OpFunctionCall %bool %get_bool
-         %14 = OpCompositeConstruct %v2bool %13 %13
+         %12 = OpFunctionCall %bool %get_bool
+         %14 = OpCompositeConstruct %v2bool %12 %12
                OpStore %v2 %14
-         %19 = OpFunctionCall %bool %get_bool
-         %20 = OpCompositeConstruct %v3bool %19 %19 %19
+         %18 = OpFunctionCall %bool %get_bool
+         %20 = OpCompositeConstruct %v3bool %18 %18 %18
                OpStore %v3 %20
-         %25 = OpFunctionCall %bool %get_bool
-         %26 = OpCompositeConstruct %v4bool %25 %25 %25 %25
+         %24 = OpFunctionCall %bool %get_bool
+         %26 = OpCompositeConstruct %v4bool %24 %24 %24 %24
                OpStore %v4 %26
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/expressions/splat/call/f32.wgsl.expected.glsl b/test/tint/expressions/splat/call/f32.wgsl.expected.glsl
index 677314b..279c1a3 100644
--- a/test/tint/expressions/splat/call/f32.wgsl.expected.glsl
+++ b/test/tint/expressions/splat/call/f32.wgsl.expected.glsl
@@ -9,8 +9,11 @@
 }
 
 void f() {
-  vec2 v2 = vec2(get_f32());
-  vec3 v3 = vec3(get_f32());
-  vec4 v4 = vec4(get_f32());
+  float tint_symbol = get_f32();
+  vec2 v2 = vec2(tint_symbol);
+  float tint_symbol_1 = get_f32();
+  vec3 v3 = vec3(tint_symbol_1);
+  float tint_symbol_2 = get_f32();
+  vec4 v4 = vec4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/f32.wgsl.expected.hlsl b/test/tint/expressions/splat/call/f32.wgsl.expected.hlsl
index 63840f2..541bccf 100644
--- a/test/tint/expressions/splat/call/f32.wgsl.expected.hlsl
+++ b/test/tint/expressions/splat/call/f32.wgsl.expected.hlsl
@@ -8,7 +8,10 @@
 }
 
 void f() {
-  float2 v2 = float2((get_f32()).xx);
-  float3 v3 = float3((get_f32()).xxx);
-  float4 v4 = float4((get_f32()).xxxx);
+  const float tint_symbol = get_f32();
+  float2 v2 = float2((tint_symbol).xx);
+  const float tint_symbol_1 = get_f32();
+  float3 v3 = float3((tint_symbol_1).xxx);
+  const float tint_symbol_2 = get_f32();
+  float4 v4 = float4((tint_symbol_2).xxxx);
 }
diff --git a/test/tint/expressions/splat/call/f32.wgsl.expected.msl b/test/tint/expressions/splat/call/f32.wgsl.expected.msl
index 1de17d9..7a9509e 100644
--- a/test/tint/expressions/splat/call/f32.wgsl.expected.msl
+++ b/test/tint/expressions/splat/call/f32.wgsl.expected.msl
@@ -6,8 +6,11 @@
 }
 
 void f() {
-  float2 v2 = float2(get_f32());
-  float3 v3 = float3(get_f32());
-  float4 v4 = float4(get_f32());
+  float const tint_symbol = get_f32();
+  float2 v2 = float2(tint_symbol);
+  float const tint_symbol_1 = get_f32();
+  float3 v3 = float3(tint_symbol_1);
+  float const tint_symbol_2 = get_f32();
+  float4 v4 = float4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/f32.wgsl.expected.spvasm b/test/tint/expressions/splat/call/f32.wgsl.expected.spvasm
index 57e9ac3..07ed899 100644
--- a/test/tint/expressions/splat/call/f32.wgsl.expected.spvasm
+++ b/test/tint/expressions/splat/call/f32.wgsl.expected.spvasm
@@ -40,14 +40,14 @@
          %v2 = OpVariable %_ptr_Function_v2float Function %17
          %v3 = OpVariable %_ptr_Function_v3float Function %23
          %v4 = OpVariable %_ptr_Function_v4float Function %29
-         %13 = OpFunctionCall %float %get_f32
-         %14 = OpCompositeConstruct %v2float %13 %13
+         %12 = OpFunctionCall %float %get_f32
+         %14 = OpCompositeConstruct %v2float %12 %12
                OpStore %v2 %14
-         %19 = OpFunctionCall %float %get_f32
-         %20 = OpCompositeConstruct %v3float %19 %19 %19
+         %18 = OpFunctionCall %float %get_f32
+         %20 = OpCompositeConstruct %v3float %18 %18 %18
                OpStore %v3 %20
-         %25 = OpFunctionCall %float %get_f32
-         %26 = OpCompositeConstruct %v4float %25 %25 %25 %25
+         %24 = OpFunctionCall %float %get_f32
+         %26 = OpCompositeConstruct %v4float %24 %24 %24 %24
                OpStore %v4 %26
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/expressions/splat/call/i32.wgsl.expected.glsl b/test/tint/expressions/splat/call/i32.wgsl.expected.glsl
index 86fad46..d3cdf57 100644
--- a/test/tint/expressions/splat/call/i32.wgsl.expected.glsl
+++ b/test/tint/expressions/splat/call/i32.wgsl.expected.glsl
@@ -9,8 +9,11 @@
 }
 
 void f() {
-  ivec2 v2 = ivec2(get_i32());
-  ivec3 v3 = ivec3(get_i32());
-  ivec4 v4 = ivec4(get_i32());
+  int tint_symbol = get_i32();
+  ivec2 v2 = ivec2(tint_symbol);
+  int tint_symbol_1 = get_i32();
+  ivec3 v3 = ivec3(tint_symbol_1);
+  int tint_symbol_2 = get_i32();
+  ivec4 v4 = ivec4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/i32.wgsl.expected.hlsl b/test/tint/expressions/splat/call/i32.wgsl.expected.hlsl
index 89f22e9..b4334fe 100644
--- a/test/tint/expressions/splat/call/i32.wgsl.expected.hlsl
+++ b/test/tint/expressions/splat/call/i32.wgsl.expected.hlsl
@@ -8,7 +8,10 @@
 }
 
 void f() {
-  int2 v2 = int2((get_i32()).xx);
-  int3 v3 = int3((get_i32()).xxx);
-  int4 v4 = int4((get_i32()).xxxx);
+  const int tint_symbol = get_i32();
+  int2 v2 = int2((tint_symbol).xx);
+  const int tint_symbol_1 = get_i32();
+  int3 v3 = int3((tint_symbol_1).xxx);
+  const int tint_symbol_2 = get_i32();
+  int4 v4 = int4((tint_symbol_2).xxxx);
 }
diff --git a/test/tint/expressions/splat/call/i32.wgsl.expected.msl b/test/tint/expressions/splat/call/i32.wgsl.expected.msl
index 46579d2..bdeb23d 100644
--- a/test/tint/expressions/splat/call/i32.wgsl.expected.msl
+++ b/test/tint/expressions/splat/call/i32.wgsl.expected.msl
@@ -6,8 +6,11 @@
 }
 
 void f() {
-  int2 v2 = int2(get_i32());
-  int3 v3 = int3(get_i32());
-  int4 v4 = int4(get_i32());
+  int const tint_symbol = get_i32();
+  int2 v2 = int2(tint_symbol);
+  int const tint_symbol_1 = get_i32();
+  int3 v3 = int3(tint_symbol_1);
+  int const tint_symbol_2 = get_i32();
+  int4 v4 = int4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/i32.wgsl.expected.spvasm b/test/tint/expressions/splat/call/i32.wgsl.expected.spvasm
index 3491493a1..f836484 100644
--- a/test/tint/expressions/splat/call/i32.wgsl.expected.spvasm
+++ b/test/tint/expressions/splat/call/i32.wgsl.expected.spvasm
@@ -40,14 +40,14 @@
          %v2 = OpVariable %_ptr_Function_v2int Function %17
          %v3 = OpVariable %_ptr_Function_v3int Function %23
          %v4 = OpVariable %_ptr_Function_v4int Function %29
-         %13 = OpFunctionCall %int %get_i32
-         %14 = OpCompositeConstruct %v2int %13 %13
+         %12 = OpFunctionCall %int %get_i32
+         %14 = OpCompositeConstruct %v2int %12 %12
                OpStore %v2 %14
-         %19 = OpFunctionCall %int %get_i32
-         %20 = OpCompositeConstruct %v3int %19 %19 %19
+         %18 = OpFunctionCall %int %get_i32
+         %20 = OpCompositeConstruct %v3int %18 %18 %18
                OpStore %v3 %20
-         %25 = OpFunctionCall %int %get_i32
-         %26 = OpCompositeConstruct %v4int %25 %25 %25 %25
+         %24 = OpFunctionCall %int %get_i32
+         %26 = OpCompositeConstruct %v4int %24 %24 %24 %24
                OpStore %v4 %26
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/expressions/splat/call/u32.wgsl.expected.glsl b/test/tint/expressions/splat/call/u32.wgsl.expected.glsl
index 801a93f..5240c21 100644
--- a/test/tint/expressions/splat/call/u32.wgsl.expected.glsl
+++ b/test/tint/expressions/splat/call/u32.wgsl.expected.glsl
@@ -9,8 +9,11 @@
 }
 
 void f() {
-  uvec2 v2 = uvec2(get_u32());
-  uvec3 v3 = uvec3(get_u32());
-  uvec4 v4 = uvec4(get_u32());
+  uint tint_symbol = get_u32();
+  uvec2 v2 = uvec2(tint_symbol);
+  uint tint_symbol_1 = get_u32();
+  uvec3 v3 = uvec3(tint_symbol_1);
+  uint tint_symbol_2 = get_u32();
+  uvec4 v4 = uvec4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/u32.wgsl.expected.hlsl b/test/tint/expressions/splat/call/u32.wgsl.expected.hlsl
index 1ec0173..0e7dc61 100644
--- a/test/tint/expressions/splat/call/u32.wgsl.expected.hlsl
+++ b/test/tint/expressions/splat/call/u32.wgsl.expected.hlsl
@@ -8,7 +8,10 @@
 }
 
 void f() {
-  uint2 v2 = uint2((get_u32()).xx);
-  uint3 v3 = uint3((get_u32()).xxx);
-  uint4 v4 = uint4((get_u32()).xxxx);
+  const uint tint_symbol = get_u32();
+  uint2 v2 = uint2((tint_symbol).xx);
+  const uint tint_symbol_1 = get_u32();
+  uint3 v3 = uint3((tint_symbol_1).xxx);
+  const uint tint_symbol_2 = get_u32();
+  uint4 v4 = uint4((tint_symbol_2).xxxx);
 }
diff --git a/test/tint/expressions/splat/call/u32.wgsl.expected.msl b/test/tint/expressions/splat/call/u32.wgsl.expected.msl
index 2d3050e..993c28b 100644
--- a/test/tint/expressions/splat/call/u32.wgsl.expected.msl
+++ b/test/tint/expressions/splat/call/u32.wgsl.expected.msl
@@ -6,8 +6,11 @@
 }
 
 void f() {
-  uint2 v2 = uint2(get_u32());
-  uint3 v3 = uint3(get_u32());
-  uint4 v4 = uint4(get_u32());
+  uint const tint_symbol = get_u32();
+  uint2 v2 = uint2(tint_symbol);
+  uint const tint_symbol_1 = get_u32();
+  uint3 v3 = uint3(tint_symbol_1);
+  uint const tint_symbol_2 = get_u32();
+  uint4 v4 = uint4(tint_symbol_2);
 }
 
diff --git a/test/tint/expressions/splat/call/u32.wgsl.expected.spvasm b/test/tint/expressions/splat/call/u32.wgsl.expected.spvasm
index d133c4e..9f6db6c 100644
--- a/test/tint/expressions/splat/call/u32.wgsl.expected.spvasm
+++ b/test/tint/expressions/splat/call/u32.wgsl.expected.spvasm
@@ -40,14 +40,14 @@
          %v2 = OpVariable %_ptr_Function_v2uint Function %17
          %v3 = OpVariable %_ptr_Function_v3uint Function %23
          %v4 = OpVariable %_ptr_Function_v4uint Function %29
-         %13 = OpFunctionCall %uint %get_u32
-         %14 = OpCompositeConstruct %v2uint %13 %13
+         %12 = OpFunctionCall %uint %get_u32
+         %14 = OpCompositeConstruct %v2uint %12 %12
                OpStore %v2 %14
-         %19 = OpFunctionCall %uint %get_u32
-         %20 = OpCompositeConstruct %v3uint %19 %19 %19
+         %18 = OpFunctionCall %uint %get_u32
+         %20 = OpCompositeConstruct %v3uint %18 %18 %18
                OpStore %v3 %20
-         %25 = OpFunctionCall %uint %get_u32
-         %26 = OpCompositeConstruct %v4uint %25 %25 %25 %25
+         %24 = OpFunctionCall %uint %get_u32
+         %26 = OpCompositeConstruct %v4uint %24 %24 %24 %24
                OpStore %v4 %26
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
index eb39d6d..f6b03dc 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
@@ -16,15 +16,16 @@
 }
 
 strided_arr[2] mat2x2_stride_16_to_arr(mat2 m) {
-  strided_arr tint_symbol = strided_arr(m[0u]);
-  strided_arr tint_symbol_1 = strided_arr(m[1u]);
-  strided_arr tint_symbol_2[2] = strided_arr[2](tint_symbol, tint_symbol_1);
-  return tint_symbol_2;
+  strided_arr tint_symbol_1 = strided_arr(m[0u]);
+  strided_arr tint_symbol_2 = strided_arr(m[1u]);
+  strided_arr tint_symbol_3[2] = strided_arr[2](tint_symbol_1, tint_symbol_2);
+  return tint_symbol_3;
 }
 
 void f_1() {
   mat2 x_15 = arr_to_mat2x2_stride_16(ssbo.m);
-  ssbo.m = mat2x2_stride_16_to_arr(x_15);
+  strided_arr tint_symbol[2] = mat2x2_stride_16_to_arr(x_15);
+  ssbo.m = tint_symbol;
   return;
 }
 
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.hlsl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.hlsl
index 71167ba..b62f051 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.hlsl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.hlsl
@@ -10,44 +10,45 @@
 
 typedef strided_arr mat2x2_stride_16_to_arr_ret[2];
 mat2x2_stride_16_to_arr_ret mat2x2_stride_16_to_arr(float2x2 m) {
-  const strided_arr tint_symbol_6 = {m[0u]};
-  const strided_arr tint_symbol_7 = {m[1u]};
-  const strided_arr tint_symbol_8[2] = {tint_symbol_6, tint_symbol_7};
-  return tint_symbol_8;
-}
-
-strided_arr tint_symbol_1(RWByteAddressBuffer buffer, uint offset) {
-  const strided_arr tint_symbol_9 = {asfloat(buffer.Load2((offset + 0u)))};
+  const strided_arr tint_symbol_7 = {m[0u]};
+  const strided_arr tint_symbol_8 = {m[1u]};
+  const strided_arr tint_symbol_9[2] = {tint_symbol_7, tint_symbol_8};
   return tint_symbol_9;
 }
 
-typedef strided_arr tint_symbol_ret[2];
-tint_symbol_ret tint_symbol(RWByteAddressBuffer buffer, uint offset) {
+strided_arr tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
+  const strided_arr tint_symbol_10 = {asfloat(buffer.Load2((offset + 0u)))};
+  return tint_symbol_10;
+}
+
+typedef strided_arr tint_symbol_1_ret[2];
+tint_symbol_1_ret tint_symbol_1(RWByteAddressBuffer buffer, uint offset) {
   strided_arr arr_1[2] = (strided_arr[2])0;
   {
     [loop] for(uint i = 0u; (i < 2u); i = (i + 1u)) {
-      arr_1[i] = tint_symbol_1(buffer, (offset + (i * 16u)));
+      arr_1[i] = tint_symbol_2(buffer, (offset + (i * 16u)));
     }
   }
   return arr_1;
 }
 
-void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, strided_arr value) {
+void tint_symbol_5(RWByteAddressBuffer buffer, uint offset, strided_arr value) {
   buffer.Store2((offset + 0u), asuint(value.el));
 }
 
-void tint_symbol_3(RWByteAddressBuffer buffer, uint offset, strided_arr value[2]) {
+void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, strided_arr value[2]) {
   strided_arr array[2] = value;
   {
     [loop] for(uint i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
-      tint_symbol_4(buffer, (offset + (i_1 * 16u)), array[i_1]);
+      tint_symbol_5(buffer, (offset + (i_1 * 16u)), array[i_1]);
     }
   }
 }
 
 void f_1() {
-  const float2x2 x_15 = arr_to_mat2x2_stride_16(tint_symbol(ssbo, 0u));
-  tint_symbol_3(ssbo, 0u, mat2x2_stride_16_to_arr(x_15));
+  const float2x2 x_15 = arr_to_mat2x2_stride_16(tint_symbol_1(ssbo, 0u));
+  const strided_arr tint_symbol[2] = mat2x2_stride_16_to_arr(x_15);
+  tint_symbol_4(ssbo, 0u, tint_symbol);
   return;
 }
 
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.msl b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.msl
index 02aa14c..abb676b 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.msl
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.msl
@@ -19,20 +19,21 @@
 }
 
 tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 m) {
-  strided_arr const tint_symbol = {.el=m[0u]};
-  strided_arr const tint_symbol_1 = {.el=m[1u]};
-  tint_array_wrapper const tint_symbol_2 = {.arr={tint_symbol, tint_symbol_1}};
-  return tint_symbol_2;
+  strided_arr const tint_symbol_1 = {.el=m[0u]};
+  strided_arr const tint_symbol_2 = {.el=m[1u]};
+  tint_array_wrapper const tint_symbol_3 = {.arr={tint_symbol_1, tint_symbol_2}};
+  return tint_symbol_3;
 }
 
-void f_1(device SSBO* const tint_symbol_3) {
-  float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_3)).m);
-  (*(tint_symbol_3)).m = mat2x2_stride_16_to_arr(x_15);
+void f_1(device SSBO* const tint_symbol_4) {
+  float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_4)).m);
+  tint_array_wrapper const tint_symbol = mat2x2_stride_16_to_arr(x_15);
+  (*(tint_symbol_4)).m = tint_symbol;
   return;
 }
 
-kernel void f(device SSBO* tint_symbol_4 [[buffer(0)]]) {
-  f_1(tint_symbol_4);
+kernel void f(device SSBO* tint_symbol_5 [[buffer(0)]]) {
+  f_1(tint_symbol_5);
   return;
 }
 
diff --git a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.spvasm b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.spvasm
index c003603..80b7d97 100644
--- a/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.spvasm
+++ b/test/tint/layout/storage/mat2x2/stride/16.spvasm.expected.spvasm
@@ -66,9 +66,9 @@
          %37 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0
          %38 = OpLoad %_arr_strided_arr_uint_2 %37
          %35 = OpFunctionCall %mat2v2float %arr_to_mat2x2_stride_16 %38
-         %39 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0
-         %40 = OpFunctionCall %_arr_strided_arr_uint_2 %mat2x2_stride_16_to_arr %35
-               OpStore %39 %40
+         %39 = OpFunctionCall %_arr_strided_arr_uint_2 %mat2x2_stride_16_to_arr %35
+         %40 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0
+               OpStore %40 %39
                OpReturn
                OpFunctionEnd
           %f = OpFunction %void None %31
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
index 6be6f1e..80072a8 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
@@ -31,7 +31,9 @@
 void tint_symbol() {
   InnerS v = InnerS(0);
   OuterS s = OuterS(S1[8](S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)))));
-  s.a1[getNextIndex()].a2[uniforms.j] = v;
+  InnerS tint_symbol_1 = v;
+  uint tint_symbol_2 = getNextIndex();
+  s.a1[tint_symbol_2].a2[uniforms.j] = tint_symbol_1;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.hlsl
index eff5fb2..e80d207 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.hlsl
@@ -25,7 +25,8 @@
   OuterS s = (OuterS)0;
   {
     S1 tint_symbol_1[8] = s.a1;
-    const uint tint_symbol_2_save = getNextIndex();
+    const uint tint_symbol_4 = getNextIndex();
+    const uint tint_symbol_2_save = tint_symbol_4;
     InnerS tint_symbol_3[8] = tint_symbol_1[tint_symbol_2_save].a2;
     tint_symbol_3[uniforms[0].y] = v;
     tint_symbol_1[tint_symbol_2_save].a2 = tint_symbol_3;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.msl
index 7d3a1ad..7652337 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.msl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.msl
@@ -26,16 +26,18 @@
   tint_array_wrapper_1 a1;
 };
 
-uint getNextIndex(thread uint* const tint_symbol_1) {
-  *(tint_symbol_1) = (*(tint_symbol_1) + 1u);
-  return *(tint_symbol_1);
+uint getNextIndex(thread uint* const tint_symbol_3) {
+  *(tint_symbol_3) = (*(tint_symbol_3) + 1u);
+  return *(tint_symbol_3);
 }
 
-kernel void tint_symbol(const constant Uniforms* tint_symbol_3 [[buffer(0)]]) {
-  thread uint tint_symbol_2 = 0u;
+kernel void tint_symbol(const constant Uniforms* tint_symbol_5 [[buffer(0)]]) {
+  thread uint tint_symbol_4 = 0u;
   InnerS v = {};
   OuterS s = {};
-  s.a1.arr[getNextIndex(&(tint_symbol_2))].a2.arr[(*(tint_symbol_3)).j] = v;
+  InnerS const tint_symbol_1 = v;
+  uint const tint_symbol_2 = getNextIndex(&(tint_symbol_4));
+  s.a1.arr[tint_symbol_2].a2.arr[(*(tint_symbol_5)).j] = tint_symbol_1;
   return;
 }
 
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.spvasm b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.spvasm
index 3fc8cbf..526b6fa 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.spvasm
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.spvasm
@@ -69,11 +69,11 @@
          %18 = OpLabel
           %v = OpVariable %_ptr_Function_InnerS Function %23
           %s = OpVariable %_ptr_Function_OuterS Function %31
+         %32 = OpLoad %InnerS %v
          %33 = OpFunctionCall %uint %getNextIndex
-         %35 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
-         %36 = OpLoad %uint %35
-         %37 = OpAccessChain %_ptr_Function_InnerS %s %uint_0 %33 %uint_0 %36
-         %38 = OpLoad %InnerS %v
-               OpStore %37 %38
+         %36 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
+         %37 = OpLoad %uint %36
+         %38 = OpAccessChain %_ptr_Function_InnerS %s %uint_0 %33 %uint_0 %37
+               OpStore %38 %32
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
index a5131ab..c7f713e 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
@@ -20,7 +20,8 @@
   OuterS s1 = OuterS(uint[8](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u));
   vec3 v = vec3(0.0f, 0.0f, 0.0f);
   v[s1.a1[uniforms.i]] = 1.0f;
-  v[f(s1.a1[uniforms.i])] = 1.0f;
+  uint tint_symbol_1 = f(s1.a1[uniforms.i]);
+  v[tint_symbol_1] = 1.0f;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.hlsl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.hlsl
index a3509f9..2d0a255 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.hlsl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.hlsl
@@ -19,6 +19,7 @@
   OuterS s1 = (OuterS)0;
   float3 v = float3(0.0f, 0.0f, 0.0f);
   set_float3(v, s1.a1[uniforms[0].x], 1.0f);
-  set_float3(v, f(s1.a1[uniforms[0].x]), 1.0f);
+  const uint tint_symbol = f(s1.a1[uniforms[0].x]);
+  set_float3(v, tint_symbol, 1.0f);
   return;
 }
diff --git a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.msl b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.msl
index bdb67f8..766be46 100644
--- a/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.msl
+++ b/test/tint/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.msl
@@ -17,11 +17,12 @@
   return (i + 1u);
 }
 
-kernel void tint_symbol(const constant Uniforms* tint_symbol_1 [[buffer(0)]]) {
+kernel void tint_symbol(const constant Uniforms* tint_symbol_2 [[buffer(0)]]) {
   OuterS s1 = {};
   float3 v = 0.0f;
-  v[s1.a1.arr[(*(tint_symbol_1)).i]] = 1.0f;
-  v[f(s1.a1.arr[(*(tint_symbol_1)).i])] = 1.0f;
+  v[s1.a1.arr[(*(tint_symbol_2)).i]] = 1.0f;
+  uint const tint_symbol_1 = f(s1.a1.arr[(*(tint_symbol_2)).i]);
+  v[tint_symbol_1] = 1.0f;
   return;
 }
 
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
index 3ce4c10..02d28e9 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
@@ -4,11 +4,11 @@
   return ((a * b) + c);
 }
 
-void phony_sink(int p0, int p1, int p2) {
-}
-
 void tint_symbol() {
-  phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11));
+  int tint_symbol_1 = f(1, 2, 3);
+  int tint_symbol_2 = f(4, 5, 6);
+  int tint_symbol_3 = f(8, 9, 10);
+  int tint_symbol_4 = f(7, tint_symbol_3, 11);
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.hlsl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.hlsl
index a295582..12c8813 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.hlsl
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.hlsl
@@ -2,11 +2,11 @@
   return ((a * b) + c);
 }
 
-void phony_sink(int p0, int p1, int p2) {
-}
-
 [numthreads(1, 1, 1)]
 void main() {
-  phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11));
+  const int tint_symbol = f(1, 2, 3);
+  const int tint_symbol_1 = f(4, 5, 6);
+  const int tint_symbol_2 = f(8, 9, 10);
+  const int tint_symbol_3 = f(7, tint_symbol_2, 11);
   return;
 }
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.msl b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.msl
index 303cc5a..13039ab 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.msl
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.msl
@@ -5,11 +5,11 @@
   return as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(a) * as_type<uint>(b)))) + as_type<uint>(c)));
 }
 
-void phony_sink(int p0, int p1, int p2) {
-}
-
 kernel void tint_symbol() {
-  phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11));
+  int const tint_symbol_1 = f(1, 2, 3);
+  int const tint_symbol_2 = f(4, 5, 6);
+  int const tint_symbol_3 = f(8, 9, 10);
+  int const tint_symbol_4 = f(7, tint_symbol_3, 11);
   return;
 }
 
diff --git a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.spvasm b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.spvasm
index 2776d06..7b0f464 100644
--- a/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.spvasm
+++ b/test/tint/statements/assign/phony/multiple_side_effects.wgsl.expected.spvasm
@@ -22,10 +22,10 @@
       %int_4 = OpConstant %int 4
       %int_5 = OpConstant %int 5
       %int_6 = OpConstant %int 6
-      %int_7 = OpConstant %int 7
       %int_8 = OpConstant %int 8
       %int_9 = OpConstant %int 9
      %int_10 = OpConstant %int 10
+      %int_7 = OpConstant %int 7
      %int_11 = OpConstant %int 11
           %f = OpFunction %int None %1
           %a = OpFunctionParameter %int
@@ -40,9 +40,9 @@
          %13 = OpLabel
          %14 = OpFunctionCall %int %f %int_1 %int_2 %int_3
          %18 = OpFunctionCall %int %f %int_4 %int_5 %int_6
-         %24 = OpFunctionCall %int %f %int_8 %int_9 %int_10
-         %22 = OpFunctionCall %int %f %int_7 %24 %int_11
-         %29 = OpIMul %int %18 %22
+         %22 = OpFunctionCall %int %f %int_8 %int_9 %int_10
+         %26 = OpFunctionCall %int %f %int_7 %22 %int_11
+         %29 = OpIMul %int %18 %26
          %30 = OpIAdd %int %14 %29
                OpReturn
                OpFunctionEnd