reader/spirv: Always run the cleanup transforms The SPIR-V cleanup transforms were only being run if the DecomposeStridedMatrix transform needed to be run - despite the RemoveUnreachableStatements transform needing to be run, always. Change-Id: I5dc28a79200ab67c96fb793980412a5632e26026 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/78780 Reviewed-by: James Price <jrprice@google.com> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Ben Clayton <bclayton@google.com>
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; }