diff --git a/src/reader/spirv/parser.cc b/src/reader/spirv/parser.cc
index 0191387..2711733 100644
--- a/src/reader/spirv/parser.cc
+++ b/src/reader/spirv/parser.cc
@@ -50,18 +50,12 @@
     return program;
   }
 
-  // If the generated program contains matrices with a custom MatrixStride
-  // attribute then we need to decompose these into an array of vectors
-  if (transform::DecomposeStridedMatrix().ShouldRun(&program)) {
-    transform::Manager manager;
-    manager.Add<transform::Unshadow>();
-    manager.Add<transform::SimplifyPointers>();
-    manager.Add<transform::DecomposeStridedMatrix>();
-    manager.Add<transform::RemoveUnreachableStatements>();
-    return manager.Run(&program).program;
-  }
-
-  return program;
+  transform::Manager manager;
+  manager.Add<transform::Unshadow>();
+  manager.Add<transform::SimplifyPointers>();
+  manager.Add<transform::DecomposeStridedMatrix>();
+  manager.Add<transform::RemoveUnreachableStatements>();
+  return manager.Run(&program).program;
 }
 
 }  // namespace spirv
diff --git a/test/bug/tint/749.spvasm.expected.wgsl b/test/bug/tint/749.spvasm.expected.wgsl
index f23b495..47d1cb8 100644
--- a/test/bug/tint/749.spvasm.expected.wgsl
+++ b/test/bug/tint/749.spvasm.expected.wgsl
@@ -31,11 +31,11 @@
   let x_935 : i32 = temp;
   temp = 0;
   temp = x_935;
-  let x_30 : ptr<private, i32> = &(obj.numbers[x_28]);
-  let x_936 : i32 = *(x_30);
-  *(x_30) = 0;
-  *(x_30) = x_936;
-  let x_31 : i32 = *(x_30);
+  let x_30_save = x_28;
+  let x_936 : i32 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_936;
+  let x_31 : i32 = obj.numbers[x_30_save];
   let x_937 : i32 = temp;
   temp = 0;
   temp = x_937;
@@ -48,26 +48,26 @@
   *(i) = 0;
   *(i) = x_939;
   let x_32 : i32 = *(i);
-  let x_940 : i32 = *(x_30);
-  *(x_30) = 0;
-  *(x_30) = x_940;
+  let x_940 : i32 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_940;
   let x_33 : i32 = *(j);
   let x_941 : i32 = *(i);
   *(i) = 0;
   *(i) = x_941;
   let x_526 : vec3<f32> = vec3<f32>(x_525.x, x_525.z, x_525.z);
-  let x_942 : i32 = *(x_30);
-  *(x_30) = 0;
-  *(x_30) = x_942;
-  let x_34 : ptr<private, i32> = &(obj.numbers[x_33]);
-  let x_35 : i32 = *(x_34);
+  let x_942 : i32 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_942;
+  let x_34_save = x_33;
+  let x_35 : i32 = obj.numbers[x_34_save];
   let x_943 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_943;
   let x_527 : vec2<f32> = vec2<f32>(x_526.x, x_526.x);
-  let x_36 : ptr<private, i32> = &(obj.numbers[x_32]);
+  let x_36_save = x_32;
   let x_528 : vec3<f32> = vec3<f32>(x_524.x, x_524.z, x_524.x);
-  *(x_36) = x_35;
+  obj.numbers[x_36_save] = x_35;
   let x_944 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_944;
@@ -80,24 +80,24 @@
   temp = 0;
   temp = x_946;
   let x_530 : vec2<f32> = vec2<f32>(x_529.z, x_529.y);
-  let x_947 : i32 = *(x_34);
-  *(x_34) = 0;
-  *(x_34) = x_947;
+  let x_947 : i32 = obj.numbers[x_34_save];
+  obj.numbers[x_34_save] = 0;
+  obj.numbers[x_34_save] = x_947;
   let x_38 : i32 = temp;
   let x_948 : i32 = *(j);
   *(j) = 0;
   *(j) = x_948;
   let x_531 : vec3<f32> = vec3<f32>(x_527.x, x_526.y, x_526.x);
-  let x_949 : i32 = *(x_36);
-  *(x_36) = 0;
-  *(x_36) = x_949;
+  let x_949 : i32 = obj.numbers[x_36_save];
+  obj.numbers[x_36_save] = 0;
+  obj.numbers[x_36_save] = x_949;
   let x_950 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_950;
   let x_532 : vec3<f32> = vec3<f32>(x_528.x, x_528.y, x_528.x);
-  let x_951 : i32 = *(x_34);
-  *(x_34) = 0;
-  *(x_34) = x_951;
+  let x_951 : i32 = obj.numbers[x_34_save];
+  obj.numbers[x_34_save] = 0;
+  obj.numbers[x_34_save] = x_951;
   obj.numbers[x_37] = x_38;
   return;
 }
@@ -119,11 +119,11 @@
   let x_953 : i32 = *(l);
   *(l) = 0;
   *(l) = x_953;
-  let x_42 : ptr<private, i32> = &(obj.numbers[x_41]);
-  let x_954 : i32 = *(x_42);
-  *(x_42) = 0;
-  *(x_42) = x_954;
-  let x_43 : i32 = *(x_42);
+  let x_42_save = x_41;
+  let x_954 : i32 = obj.numbers[x_42_save];
+  obj.numbers[x_42_save] = 0;
+  obj.numbers[x_42_save] = x_954;
+  let x_43 : i32 = obj.numbers[x_42_save];
   let x_955 : i32 = param_3;
   param_3 = 0;
   param_3 = x_955;
@@ -184,10 +184,10 @@
       break;
     }
     let x_60 : i32 = j_1;
-    let x_969 : i32 = *(x_42);
-    *(x_42) = 0;
-    *(x_42) = x_969;
-    let x_61 : ptr<private, i32> = &(obj.numbers[x_60]);
+    let x_969 : i32 = obj.numbers[x_42_save];
+    obj.numbers[x_42_save] = 0;
+    obj.numbers[x_42_save] = x_969;
+    let x_61_save = x_60;
     let x_970 : i32 = *(h);
     *(h) = 0;
     *(h) = x_970;
@@ -195,7 +195,7 @@
     let x_971 : i32 = param_1;
     param_1 = 0;
     param_1 = x_971;
-    let x_62 : i32 = *(x_61);
+    let x_62 : i32 = obj.numbers[x_61_save];
     let x_972 : QuicksortObject = obj;
     obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
     obj = x_972;
@@ -268,9 +268,9 @@
       *(h) = 0;
       *(h) = x_988;
       let x_547 : vec3<f32> = vec3<f32>(x_539.x, x_541.z, x_541.z);
-      let x_989 : i32 = *(x_61);
-      *(x_61) = 0;
-      *(x_61) = x_989;
+      let x_989 : i32 = obj.numbers[x_61_save];
+      obj.numbers[x_61_save] = 0;
+      obj.numbers[x_61_save] = x_989;
       let x_990 : i32 = param;
       param = 0;
       param = x_990;
@@ -279,15 +279,15 @@
       param_1 = 0;
       param_1 = x_991;
       let x_548 : vec3<f32> = vec3<f32>(x_541.y, x_541.z, x_541.x);
-      let x_992 : i32 = *(x_61);
-      *(x_61) = 0;
-      *(x_61) = x_992;
+      let x_992 : i32 = obj.numbers[x_61_save];
+      obj.numbers[x_61_save] = 0;
+      obj.numbers[x_61_save] = x_992;
     }
   }
   let x_76 : i32 = i_1;
-  let x_993 : i32 = *(x_42);
-  *(x_42) = 0;
-  *(x_42) = x_993;
+  let x_993 : i32 = obj.numbers[x_42_save];
+  obj.numbers[x_42_save] = 0;
+  obj.numbers[x_42_save] = x_993;
   let x_549 : vec2<f32> = vec2<f32>(x_534.x, x_534.y);
   let x_994 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
@@ -394,7 +394,7 @@
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_1016;
   let x_560 : vec3<f32> = vec3<f32>(x_559.y, x_559.x, x_557.x);
-  let x_96 : ptr<function, i32> = &(stack[x_94]);
+  let x_96_save = x_94;
   let x_1017 : array<i32, 10u> = stack;
   stack = array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   stack = x_1017;
@@ -402,7 +402,7 @@
   let x_1018 : i32 = l_1;
   l_1 = 0;
   l_1 = 0;
-  *(x_96) = x_95;
+  stack[x_96_save] = x_95;
   let x_1019 : i32 = param_5;
   param_5 = 0;
   param_5 = x_1019;
@@ -411,13 +411,13 @@
   param_4 = 0;
   param_4 = x_1020;
   let x_562 : vec3<f32> = vec3<f32>(vec3<f32>(1.0, 2.0, 3.0).z, x_558.y, vec3<f32>(1.0, 2.0, 3.0).y);
-  let x_1021 : i32 = *(x_96);
-  *(x_96) = 0;
-  *(x_96) = x_1021;
+  let x_1021 : i32 = stack[x_96_save];
+  stack[x_96_save] = 0;
+  stack[x_96_save] = x_1021;
   let x_98 : i32 = (x_97 + 1);
-  let x_1022 : i32 = *(x_96);
-  *(x_96) = 0;
-  *(x_96) = x_1022;
+  let x_1022 : i32 = stack[x_96_save];
+  stack[x_96_save] = 0;
+  stack[x_96_save] = x_1022;
   let x_563 : vec3<f32> = vec3<f32>(x_559.x, x_559.z, x_556.y);
   top = x_98;
   let x_1023 : i32 = param_4;
@@ -431,7 +431,7 @@
   let x_1025 : i32 = l_1;
   l_1 = 0;
   l_1 = x_1025;
-  let x_100 : ptr<function, i32> = &(stack[x_98]);
+  let x_100_save = x_98;
   let x_1026 : i32 = param_5;
   param_5 = 0;
   param_5 = x_1026;
@@ -439,7 +439,7 @@
   let x_1027 : i32 = p;
   p = 0;
   p = x_1027;
-  *(x_100) = x_99;
+  stack[x_100_save] = x_99;
   loop {
     let x_566 : vec3<f32> = vec3<f32>(x_563.x, x_563.x, x_563.x);
     let x_1028 : i32 = h_1;
@@ -480,11 +480,11 @@
     let x_1036 : i32 = p;
     p = 0;
     p = x_1036;
-    let x_110 : ptr<function, i32> = &(stack[x_108]);
-    let x_1037 : i32 = *(x_96);
-    *(x_96) = 0;
-    *(x_96) = x_1037;
-    let x_111 : i32 = *(x_110);
+    let x_110_save = x_108;
+    let x_1037 : i32 = stack[x_96_save];
+    stack[x_96_save] = 0;
+    stack[x_96_save] = x_1037;
+    let x_111 : i32 = stack[x_110_save];
     let x_1038 : array<i32, 10u> = stack;
     stack = array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
     stack = x_1038;
@@ -504,9 +504,9 @@
     let x_1042 : i32 = param_4;
     param_4 = 0;
     param_4 = x_1042;
-    let x_1043 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1043;
+    let x_1043 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1043;
     let x_573 : vec2<f32> = vec2<f32>(vec3<f32>(1.0, 2.0, 3.0).y, vec3<f32>(1.0, 2.0, 3.0).z);
     top = (x_112 - 1);
     let x_1044 : i32 = param_5;
@@ -516,12 +516,12 @@
     let x_1045 : i32 = h_1;
     h_1 = 0;
     h_1 = x_1045;
-    let x_114 : ptr<function, i32> = &(stack[x_112]);
+    let x_114_save = x_112;
     let x_575 : vec2<f32> = vec2<f32>(x_564.y, x_564.z);
-    let x_1046 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1046;
-    let x_115 : i32 = *(x_114);
+    let x_1046 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1046;
+    let x_115 : i32 = stack[x_114_save];
     let x_1047 : i32 = p;
     p = 0;
     p = x_1047;
@@ -535,16 +535,16 @@
     top = x_1049;
     let x_118 : i32 = l_1;
     param_4 = x_118;
-    let x_1050 : i32 = *(x_110);
-    *(x_110) = 0;
-    *(x_110) = x_1050;
+    let x_1050 : i32 = stack[x_110_save];
+    stack[x_110_save] = 0;
+    stack[x_110_save] = x_1050;
     let x_577 : vec2<f32> = vec2<f32>(x_569.y, x_569.z);
     let x_120 : i32 = h_1;
     let x_578 : vec2<f32> = vec2<f32>(x_558.x, vec3<f32>(1.0, 2.0, 3.0).y);
     param_5 = x_120;
-    let x_1051 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1051;
+    let x_1051 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1051;
     let x_121 : i32 = performPartition_i1_i1_(&(param_4), &(param_5));
     let x_579 : vec2<f32> = vec2<f32>(x_567.x, x_568.x);
     let x_1052 : i32 = param_5;
@@ -566,59 +566,59 @@
     h_1 = 0;
     h_1 = x_1056;
     let x_124 : i32 = l_1;
-    let x_1057 : i32 = *(x_110);
-    *(x_110) = 0;
-    *(x_110) = x_1057;
+    let x_1057 : i32 = stack[x_110_save];
+    stack[x_110_save] = 0;
+    stack[x_110_save] = x_1057;
     let x_1058 : i32 = h_1;
     h_1 = 0;
     h_1 = x_1058;
     let x_582 : vec2<f32> = vec2<f32>(x_567.y, x_573.x);
-    let x_1059 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1059;
+    let x_1059 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1059;
     if (((x_122 - bitcast<i32>(1u)) > x_124)) {
       let x_1060 : i32 = param_4;
       param_4 = 0;
       param_4 = x_1060;
       let x_128 : i32 = top;
       let x_583 : vec2<f32> = vec2<f32>(x_571.y, x_556.y);
-      let x_1061 : i32 = *(x_100);
-      *(x_100) = 0;
-      *(x_100) = x_1061;
+      let x_1061 : i32 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1061;
       let x_1062 : array<i32, 10u> = stack;
       stack = array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
       stack = x_1062;
       let x_584 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
       let x_585 : vec3<f32> = vec3<f32>(x_580.y, x_577.x, x_577.x);
       let x_130 : i32 = l_1;
-      let x_1063 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1063;
+      let x_1063 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1063;
       let x_586 : vec2<f32> = vec2<f32>(x_564.x, x_585.x);
       let x_1064 : i32 = param_5;
       param_5 = 0;
       param_5 = x_1064;
-      let x_131 : ptr<function, i32> = &(stack[(1 + x_128)]);
-      let x_1065 : i32 = *(x_110);
-      *(x_110) = 0;
-      *(x_110) = x_1065;
+      let x_131_save = (1 + x_128);
+      let x_1065 : i32 = stack[x_110_save];
+      stack[x_110_save] = 0;
+      stack[x_110_save] = x_1065;
       let x_587 : vec3<f32> = vec3<f32>(x_566.y, x_566.y, x_563.x);
       let x_1066 : i32 = param_5;
       param_5 = 0;
       param_5 = x_1066;
-      *(x_131) = x_130;
+      stack[x_131_save] = x_130;
       let x_132 : i32 = top;
-      let x_1067 : i32 = *(x_100);
-      *(x_100) = 0;
-      *(x_100) = x_1067;
+      let x_1067 : i32 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1067;
       let x_588 : vec2<f32> = vec2<f32>(x_575.y, x_575.x);
-      let x_1068 : i32 = *(x_131);
-      *(x_131) = 0;
-      *(x_131) = x_1068;
+      let x_1068 : i32 = stack[x_131_save];
+      stack[x_131_save] = 0;
+      stack[x_131_save] = x_1068;
       let x_133 : i32 = bitcast<i32>((1u + bitcast<u32>(x_132)));
-      let x_1069 : i32 = *(x_100);
-      *(x_100) = 0;
-      *(x_100) = x_1069;
+      let x_1069 : i32 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1069;
       let x_589 : vec3<f32> = vec3<f32>(x_576.z, x_588.y, x_576.z);
       let x_1070 : i32 = h_1;
       h_1 = 0;
@@ -629,73 +629,73 @@
       stack = x_1071;
       let x_134 : i32 = p;
       let x_590 : vec2<f32> = vec2<f32>(x_576.x, x_573.y);
-      let x_1072 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1072;
-      let x_136 : ptr<function, i32> = &(stack[x_133]);
-      let x_1073 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1073;
-      *(x_136) = (x_134 - bitcast<i32>(1u));
-      let x_1074 : i32 = *(x_96);
-      *(x_96) = 0;
-      *(x_96) = x_1074;
+      let x_1072 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1072;
+      let x_136_save = x_133;
+      let x_1073 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1073;
+      stack[x_136_save] = (x_134 - bitcast<i32>(1u));
+      let x_1074 : i32 = stack[x_96_save];
+      stack[x_96_save] = 0;
+      stack[x_96_save] = x_1074;
       let x_591 : vec2<f32> = vec2<f32>(x_569.z, x_569.y);
-      let x_1075 : i32 = *(x_136);
-      *(x_136) = 0;
-      *(x_136) = x_1075;
+      let x_1075 : i32 = stack[x_136_save];
+      stack[x_136_save] = 0;
+      stack[x_136_save] = x_1075;
     }
-    let x_1076 : i32 = *(x_96);
-    *(x_96) = 0;
-    *(x_96) = x_1076;
+    let x_1076 : i32 = stack[x_96_save];
+    stack[x_96_save] = 0;
+    stack[x_96_save] = x_1076;
     let x_592 : vec2<f32> = vec2<f32>(vec3<f32>(1.0, 2.0, 3.0).x, vec3<f32>(1.0, 2.0, 3.0).y);
     let x_1077 : QuicksortObject = obj;
     obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
     obj = x_1077;
     let x_137 : i32 = p;
-    let x_1078 : i32 = *(x_114);
-    *(x_114) = 0;
-    *(x_114) = x_1078;
+    let x_1078 : i32 = stack[x_114_save];
+    stack[x_114_save] = 0;
+    stack[x_114_save] = x_1078;
     let x_593 : vec3<f32> = vec3<f32>(x_571.z, x_556.x, x_556.y);
     let x_1079 : i32 = p;
     p = 0;
     p = x_1079;
     let x_594 : vec3<f32> = vec3<f32>(x_563.z, x_563.x, x_575.x);
-    let x_1080 : i32 = *(x_114);
-    *(x_114) = 0;
-    *(x_114) = x_1080;
+    let x_1080 : i32 = stack[x_114_save];
+    stack[x_114_save] = 0;
+    stack[x_114_save] = x_1080;
     let x_139 : i32 = h_1;
     let x_1081 : i32 = top;
     top = 0;
     top = x_1081;
     let x_595 : vec3<f32> = vec3<f32>(x_560.z, x_568.x, x_560.x);
-    let x_1082 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1082;
+    let x_1082 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1082;
     let x_1083 : i32 = p;
     p = 0;
     p = x_1083;
     if ((bitcast<i32>((1u + bitcast<u32>(x_137))) < x_139)) {
-      let x_1084 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1084;
+      let x_1084 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1084;
       let x_596 : vec2<f32> = vec2<f32>(x_592.y, x_582.x);
       let x_1085 : i32 = l_1;
       l_1 = 0;
       l_1 = x_1085;
       let x_143 : i32 = top;
-      let x_1086 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1086;
+      let x_1086 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1086;
       let x_597 : vec3<f32> = vec3<f32>(x_562.y, x_560.y, x_560.y);
       let x_144 : i32 = (x_143 + 1);
       let x_1087 : i32 = param_5;
       param_5 = 0;
       param_5 = x_1087;
       top = x_144;
-      let x_1088 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1088;
+      let x_1088 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1088;
       let x_145 : i32 = p;
       let x_1089 : i32 = param_5;
       param_5 = 0;
@@ -705,53 +705,53 @@
       p = 0;
       p = x_1090;
       let x_600 : vec3<f32> = vec3<f32>(x_556.x, x_580.x, x_580.x);
-      let x_1091 : i32 = *(x_100);
-      *(x_100) = 0;
-      *(x_100) = x_1091;
-      let x_147 : ptr<function, i32> = &(stack[x_144]);
-      let x_1092 : i32 = *(x_110);
-      *(x_110) = 0;
-      *(x_110) = x_1092;
+      let x_1091 : i32 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1091;
+      let x_147_save = x_144;
+      let x_1092 : i32 = stack[x_110_save];
+      stack[x_110_save] = 0;
+      stack[x_110_save] = x_1092;
       let x_601 : vec2<f32> = vec2<f32>(x_563.x, x_563.y);
-      *(x_147) = bitcast<i32>((1u + bitcast<u32>(x_145)));
+      stack[x_147_save] = bitcast<i32>((1u + bitcast<u32>(x_145)));
       let x_1093 : array<i32, 10u> = stack;
       stack = array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
       stack = x_1093;
       let x_148 : i32 = top;
-      let x_1094 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1094;
+      let x_1094 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1094;
       let x_602 : vec2<f32> = vec2<f32>(x_565.y, x_599.y);
       let x_1095 : array<i32, 10u> = stack;
       stack = array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
       stack = x_1095;
       let x_149 : i32 = (x_148 + bitcast<i32>(1u));
-      let x_1096 : i32 = *(x_147);
-      *(x_147) = 0;
-      *(x_147) = x_1096;
+      let x_1096 : i32 = stack[x_147_save];
+      stack[x_147_save] = 0;
+      stack[x_147_save] = x_1096;
       top = x_149;
       let x_1097 : i32 = param_4;
       param_4 = 0;
       param_4 = x_1097;
       let x_150 : i32 = h_1;
-      let x_1098 : i32 = *(x_100);
-      *(x_100) = 0;
-      *(x_100) = x_1098;
-      let x_1099 : i32 = *(x_96);
-      *(x_96) = 0;
-      *(x_96) = x_1099;
+      let x_1098 : i32 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1098;
+      let x_1099 : i32 = stack[x_96_save];
+      stack[x_96_save] = 0;
+      stack[x_96_save] = x_1099;
       stack[x_149] = x_150;
-      let x_1100 : i32 = *(x_114);
-      *(x_114) = 0;
-      *(x_114) = x_1100;
+      let x_1100 : i32 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1100;
       let x_603 : vec3<f32> = vec3<f32>(x_568.y, x_564.x, x_564.x);
       let x_1101 : i32 = l_1;
       l_1 = 0;
       l_1 = x_1101;
     }
-    let x_1102 : i32 = *(x_100);
-    *(x_100) = 0;
-    *(x_100) = x_1102;
+    let x_1102 : i32 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1102;
 
     continuing {
       let x_1103 : i32 = l_1;
@@ -852,17 +852,16 @@
   let x_769 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_769;
-  let x_200 : ptr<private, i32> = &(obj.numbers[0u]);
-  let x_770 : i32 = *(x_200);
-  *(x_200) = 0;
-  *(x_200) = x_770;
-  let x_201 : i32 = *(x_200);
+  let x_770 : i32 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_770;
+  let x_201 : i32 = obj.numbers[0u];
   let x_771 : QuicksortObject = obj;
   obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
   obj = x_771;
-  let x_772 : i32 = *(x_200);
-  *(x_200) = 0;
-  *(x_200) = x_772;
+  let x_772 : i32 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_772;
   let x_206 : f32 = color.x;
   let x_773 : f32 = color.x;
   color.x = 0.0;
@@ -895,9 +894,9 @@
     let x_780 : i32 = i_2;
     i_2 = 0;
     i_2 = x_780;
-    let x_781 : i32 = *(x_200);
-    *(x_200) = 0;
-    *(x_200) = x_781;
+    let x_781 : i32 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_781;
     let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
     let x_782 : f32 = uv.x;
     uv.x = 0.0;
@@ -932,9 +931,9 @@
     color[0] = 0.0;
     color[0] = x_790;
     color.x = (f32(x_216) + x_219);
-    let x_791 : i32 = *(x_200);
-    *(x_200) = 0;
-    *(x_200) = x_791;
+    let x_791 : i32 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_791;
   }
   let x_792 : f32 = uv.x;
   uv.x = 0.0;
@@ -965,7 +964,6 @@
     let x_799 : f32 = color.x;
     color.x = 0.0;
     color.x = x_799;
-    let x_229 : ptr<private, i32> = &(obj.numbers[2u]);
     let x_800 : f32 = color.x;
     color.x = 0.0;
     color.x = x_800;
@@ -973,24 +971,24 @@
     let x_801 : f32 = color.x;
     color.x = 0.0;
     color.x = x_801;
-    let x_230 : i32 = *(x_229);
+    let x_230 : i32 = obj.numbers[2u];
     let x_802 : f32 = uv.x;
     uv.x = 0.0;
     uv.x = x_802;
     let x_803 : f32 = color.x;
     color.x = 0.0;
     color.x = x_803;
-    let x_804 : i32 = *(x_229);
-    *(x_229) = 0;
-    *(x_229) = x_804;
+    let x_804 : i32 = obj.numbers[2u];
+    obj.numbers[2u] = 0;
+    obj.numbers[2u] = x_804;
     let x_464 : vec2<f32> = vec2<f32>(x_450.y, x_191.x);
     let x_805 : f32 = color.y;
     color.y = 0.0;
     color.y = x_805;
     let x_234 : f32 = color.y;
-    let x_806 : i32 = *(x_229);
-    *(x_229) = 0;
-    *(x_229) = x_806;
+    let x_806 : i32 = obj.numbers[2u];
+    obj.numbers[2u] = 0;
+    obj.numbers[2u] = x_806;
     let x_465 : vec2<f32> = vec2<f32>(x_463.x, x_185.x);
     let x_807 : f32 = color.x;
     color.x = 0.0;
@@ -1047,9 +1045,9 @@
     let x_821 : f32 = color.z;
     color.z = 0.0;
     color.z = x_821;
-    let x_822 : i32 = *(x_200);
-    *(x_200) = 0;
-    *(x_200) = x_822;
+    let x_822 : i32 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_822;
     let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
     let x_823 : f32 = color.z;
     color.z = 0.0;
@@ -1064,8 +1062,7 @@
   uv[0] = 0.0;
   uv[0] = x_825;
   let x_472 : vec3<f32> = vec3<f32>(x_454.x, x_454.y, x_454.y);
-  let x_253 : ptr<private, i32> = &(obj.numbers[4]);
-  let x_254 : i32 = *(x_253);
+  let x_254 : i32 = obj.numbers[4];
   let x_826 : f32 = uv[0];
   uv[0] = 0.0;
   uv[0] = x_826;
@@ -1073,9 +1070,9 @@
   color = vec3<f32>(0.0, 0.0, 0.0);
   color = x_827;
   let x_473 : vec3<f32> = vec3<f32>(x_446.y, x_453.x, x_453.x);
-  let x_828 : i32 = *(x_253);
-  *(x_253) = 0;
-  *(x_253) = x_828;
+  let x_828 : i32 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_828;
   let x_474 : vec2<f32> = vec2<f32>(x_191.x, x_184.z);
   let x_829 : f32 = uv.x;
   uv.x = 0.0;
@@ -1109,9 +1106,9 @@
   i_2 = 0;
   i_2 = x_836;
   let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
-  let x_837 : i32 = *(x_200);
-  *(x_200) = 0;
-  *(x_200) = x_837;
+  let x_837 : i32 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_837;
   let x_838 : f32 = color.y;
   color.y = 0.0;
   color.y = x_838;
@@ -1165,19 +1162,18 @@
   let x_851 : f32 = uv.y;
   uv.y = 0.0;
   uv.y = x_851;
-  let x_852 : i32 = *(x_253);
-  *(x_253) = 0;
-  *(x_253) = x_852;
+  let x_852 : i32 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_852;
   let x_274 : f32 = uv.y;
-  let x_853 : i32 = *(x_200);
-  *(x_200) = 0;
-  *(x_200) = x_853;
+  let x_853 : i32 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_853;
   if ((x_274 > 0.5)) {
     let x_854 : f32 = uv.x;
     uv.x = 0.0;
     uv.x = x_854;
     let x_486 : vec2<f32> = vec2<f32>(x_480.y, x_455.y);
-    let x_279 : ptr<private, i32> = &(obj.numbers[6u]);
     let x_855 : f32 = color.y;
     color.y = 0.0;
     color.y = x_855;
@@ -1185,16 +1181,16 @@
     let x_856 : f32 = uv.y;
     uv.y = 0.0;
     uv.y = x_856;
-    let x_280 : i32 = *(x_279);
+    let x_280 : i32 = obj.numbers[6u];
     let x_857 : f32 = uv.y;
     uv.y = 0.0;
     uv.y = x_857;
     let x_858 : i32 = i_2;
     i_2 = 0;
     i_2 = x_858;
-    let x_859 : i32 = *(x_253);
-    *(x_253) = 0;
-    *(x_253) = x_859;
+    let x_859 : i32 = obj.numbers[4];
+    obj.numbers[4] = 0;
+    obj.numbers[4] = x_859;
     let x_488 : vec2<f32> = vec2<f32>(x_473.z, x_473.y);
     let x_283 : f32 = color.y;
     let x_860 : vec2<f32> = uv;
@@ -1204,12 +1200,12 @@
     color.x = 0.0;
     color.x = x_861;
     let x_489 : vec2<f32> = vec2<f32>(x_475.y, x_475.x);
-    let x_862 : i32 = *(x_279);
-    *(x_279) = 0;
-    *(x_279) = x_862;
-    let x_863 : i32 = *(x_279);
-    *(x_279) = 0;
-    *(x_279) = x_863;
+    let x_862 : i32 = obj.numbers[6u];
+    obj.numbers[6u] = 0;
+    obj.numbers[6u] = x_862;
+    let x_863 : i32 = obj.numbers[6u];
+    obj.numbers[6u] = 0;
+    obj.numbers[6u] = x_863;
     let x_490 : vec2<f32> = vec2<f32>(x_480.z, x_480.z);
     let x_864 : QuicksortObject = obj;
     obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
@@ -1239,9 +1235,9 @@
   color.y = 0.0;
   color.y = x_870;
   let x_494 : vec3<f32> = vec3<f32>(x_191.x, x_191.y, x_191.y);
-  let x_871 : i32 = *(x_253);
-  *(x_253) = 0;
-  *(x_253) = x_871;
+  let x_871 : i32 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_871;
   if ((x_287 > 0.75)) {
     let x_872 : vec3<f32> = color;
     color = vec3<f32>(0.0, 0.0, 0.0);
@@ -1262,9 +1258,9 @@
     color.y = 0.0;
     color.y = x_876;
     let x_497 : vec2<f32> = vec2<f32>(x_477.x, x_461.y);
-    let x_877 : i32 = *(x_200);
-    *(x_200) = 0;
-    *(x_200) = x_877;
+    let x_877 : i32 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_877;
     let x_878 : f32 = color.y;
     color.y = 0.0;
     color.y = x_878;
@@ -1306,15 +1302,14 @@
   let x_888 : vec2<f32> = uv;
   uv = vec2<f32>(0.0, 0.0);
   uv = x_888;
-  let x_300 : ptr<private, i32> = &(obj.numbers[8]);
-  let x_301 : i32 = *(x_300);
+  let x_301 : i32 = obj.numbers[8];
   let x_889 : i32 = i_2;
   i_2 = 0;
   i_2 = x_889;
   let x_503 : vec2<f32> = vec2<f32>(x_185.x, x_451.z);
-  let x_890 : i32 = *(x_300);
-  *(x_300) = 0;
-  *(x_300) = x_890;
+  let x_890 : i32 = obj.numbers[8];
+  obj.numbers[8] = 0;
+  obj.numbers[8] = x_890;
   let x_891 : f32 = color.y;
   color.y = 0.0;
   color.y = x_891;
@@ -1331,9 +1326,9 @@
   color.x = 0.0;
   color.x = x_894;
   let x_506 : vec2<f32> = vec2<f32>(x_493.x, x_492.x);
-  let x_895 : i32 = *(x_253);
-  *(x_253) = 0;
-  *(x_253) = x_895;
+  let x_895 : i32 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_895;
   let x_896 : f32 = uv.y;
   uv.y = 0.0;
   uv.y = x_896;
@@ -1382,9 +1377,9 @@
   uv.y = 0.0;
   uv.y = x_908;
   let x_512 : vec3<f32> = vec3<f32>(x_455.y, x_455.y, x_455.y);
-  let x_909 : i32 = *(x_253);
-  *(x_253) = 0;
-  *(x_253) = x_909;
+  let x_909 : i32 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_909;
   if ((abs((x_308 - x_310)) < 0.25)) {
     let x_910 : f32 = uv.x;
     uv.x = 0.0;
@@ -1393,9 +1388,9 @@
     obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
     obj = x_911;
     let x_513 : vec3<f32> = vec3<f32>(x_505.z, x_505.x, x_448.x);
-    let x_912 : i32 = *(x_300);
-    *(x_300) = 0;
-    *(x_300) = x_912;
+    let x_912 : i32 = obj.numbers[8];
+    obj.numbers[8] = 0;
+    obj.numbers[8] = x_912;
     let x_317 : i32 = obj.numbers[9u];
     let x_514 : vec3<f32> = vec3<f32>(x_474.y, x_474.y, x_474.y);
     let x_913 : f32 = uv.y;
diff --git a/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl b/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
index 82d9c5a..c70da4e 100644
--- a/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
+++ b/test/ptr_ref/copy/ptr_copy.spvasm.expected.wgsl
@@ -1,7 +1,5 @@
 fn main_1() {
   var x_10 : u32;
-  let x_1 : ptr<function, u32> = &(x_10);
-  let x_2 : ptr<function, u32> = x_1;
   return;
 }
 
