writer/hlsl: Don't wrap arrays in structures

FXC has trouble dealing with these.
This was originally added to handle returning arrays as structures.
HLSL supports typedefs, which is a much simpiler solution, and doesn't upset FXC.

Bug: tint:848
Bug: tint:904
Change-Id: Ie841c9c454461a885a35c41476fd4d05d3f34cbf
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/56774
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/transform/hlsl.cc b/src/transform/hlsl.cc
index 8889fed..823f2b5 100644
--- a/src/transform/hlsl.cc
+++ b/src/transform/hlsl.cc
@@ -28,7 +28,6 @@
 #include "src/transform/pad_array_elements.h"
 #include "src/transform/promote_initializers_to_const_var.h"
 #include "src/transform/simplify.h"
-#include "src/transform/wrap_arrays_in_structs.h"
 #include "src/transform/zero_init_workgroup_memory.h"
 
 TINT_INSTANTIATE_TYPEINFO(tint::transform::Hlsl);
@@ -66,7 +65,6 @@
   manager.Add<CalculateArrayLength>();
   manager.Add<ExternalTextureTransform>();
   manager.Add<PromoteInitializersToConstVar>();
-  manager.Add<WrapArraysInStructs>();
   manager.Add<PadArrayElements>();
   data.Add<CanonicalizeEntryPointIO::Config>(
       CanonicalizeEntryPointIO::BuiltinStyle::kStructMember);
diff --git a/src/writer/hlsl/generator_impl.cc b/src/writer/hlsl/generator_impl.cc
index 550b675..57cb704 100644
--- a/src/writer/hlsl/generator_impl.cc
+++ b/src/writer/hlsl/generator_impl.cc
@@ -2109,12 +2109,27 @@
 
   {
     auto out = line();
-    if (!EmitType(out, sem->ReturnType(), ast::StorageClass::kNone,
-                  ast::Access::kReadWrite, "")) {
-      return false;
+    auto name = builder_.Symbols().NameFor(func->symbol());
+    // If the function returns an array, then we need to declare a typedef for
+    // this.
+    if (sem->ReturnType()->Is<sem::Array>()) {
+      auto typedef_name = UniqueIdentifier(name + "_ret");
+      auto pre = line();
+      pre << "typedef ";
+      if (!EmitTypeAndName(pre, sem->ReturnType(), ast::StorageClass::kNone,
+                           ast::Access::kReadWrite, typedef_name)) {
+        return false;
+      }
+      pre << ";";
+      out << typedef_name;
+    } else {
+      if (!EmitType(out, sem->ReturnType(), ast::StorageClass::kNone,
+                    ast::Access::kReadWrite, "")) {
+        return false;
+      }
     }
 
-    out << " " << builder_.Symbols().NameFor(func->symbol()) << "(";
+    out << " " << name << "(";
 
     bool first = true;
 
diff --git a/src/writer/hlsl/generator_impl_function_test.cc b/src/writer/hlsl/generator_impl_function_test.cc
index 5b0ac96..1499596 100644
--- a/src/writer/hlsl/generator_impl_function_test.cc
+++ b/src/writer/hlsl/generator_impl_function_test.cc
@@ -755,18 +755,13 @@
            Return(),
        });
 
-  GeneratorImpl& gen = SanitizeAndBuild();
+  GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_THAT(gen.result(), HasSubstr(R"(
-struct tint_array_wrapper {
-  float arr[5];
-};
-
-void my_func(tint_array_wrapper a) {
+  EXPECT_EQ(gen.result(), R"(void my_func(float a[5]) {
   return;
 }
-)"));
+)");
 }
 
 TEST_F(HlslGeneratorImplTest_Function, Emit_Function_WithArrayReturn) {
@@ -775,19 +770,14 @@
            Return(Construct(ty.array<f32, 5>())),
        });
 
-  GeneratorImpl& gen = SanitizeAndBuild();
+  GeneratorImpl& gen = Build();
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
-  EXPECT_THAT(gen.result(), HasSubstr(R"(
-struct tint_array_wrapper {
-  float arr[5];
-};
-
-tint_array_wrapper my_func() {
-  const tint_array_wrapper tint_symbol = {(float[5])0};
-  return tint_symbol;
+  EXPECT_EQ(gen.result(), R"(typedef float my_func_ret[5];
+my_func_ret my_func() {
+  return (float[5])0;
 }
-)"));
+)");
 }
 
 // https://crbug.com/tint/297
diff --git a/src/writer/hlsl/generator_impl_sanitizer_test.cc b/src/writer/hlsl/generator_impl_sanitizer_test.cc
index 99cd52a..33c2cce 100644
--- a/src/writer/hlsl/generator_impl_sanitizer_test.cc
+++ b/src/writer/hlsl/generator_impl_sanitizer_test.cc
@@ -162,13 +162,9 @@
   ASSERT_TRUE(gen.Generate()) << gen.error();
 
   auto got = gen.result();
-  auto* expect = R"(struct tint_array_wrapper {
-  int arr[4];
-};
-
-void main() {
-  const tint_array_wrapper tint_symbol = {{1, 2, 3, 4}};
-  int pos = tint_symbol.arr[3];
+  auto* expect = R"(void main() {
+  const int tint_symbol[4] = {1, 2, 3, 4};
+  int pos = tint_symbol[3];
   return;
 }
 )";
diff --git a/test/array/assign_to_function_var.wgsl.expected.hlsl b/test/array/assign_to_function_var.wgsl.expected.hlsl
index e40aa79..7fc6d52 100644
--- a/test/array/assign_to_function_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_function_var.wgsl.expected.hlsl
@@ -6,36 +6,36 @@
 struct tint_padded_array_element {
   int el;
 };
-struct tint_array_wrapper {
+struct S {
   tint_padded_array_element arr[4];
 };
-struct S {
-  tint_array_wrapper arr;
-};
 
-tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+typedef tint_padded_array_element tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
   const uint scalar_offset_1 = ((offset + 16u)) / 4;
   const uint scalar_offset_2 = ((offset + 32u)) / 4;
   const uint scalar_offset_3 = ((offset + 48u)) / 4;
-  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  const tint_padded_array_element tint_symbol_5[4] = {{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}};
   return tint_symbol_5;
 }
 
-tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+typedef tint_padded_array_element tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_padded_array_element tint_symbol_6[4] = {{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}};
   return tint_symbol_6;
 }
 
-static tint_array_wrapper src_private = (tint_array_wrapper)0;
-groupshared tint_array_wrapper src_workgroup;
+static tint_padded_array_element src_private[4] = (tint_padded_array_element[4])0;
+groupshared tint_padded_array_element src_workgroup[4];
 cbuffer cbuffer_src_uniform : register(b0, space0) {
   uint4 src_uniform[4];
 };
 RWByteAddressBuffer src_storage : register(u1, space0);
 
-tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_7 = {(tint_padded_array_element[4])0};
+typedef tint_padded_array_element ret_arr_ret[4];
+ret_arr_ret ret_arr() {
+  const tint_padded_array_element tint_symbol_7[4] = (tint_padded_array_element[4])0;
   return tint_symbol_7;
 }
 
@@ -44,24 +44,14 @@
   return tint_symbol_8;
 }
 
-struct tint_array_wrapper_3 {
-  int arr[2];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_3 arr[3];
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper_2 arr[4];
-};
-
-void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = (tint_array_wrapper)0;
-  tint_array_wrapper tint_symbol = (tint_array_wrapper)0;
-  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+void foo(tint_padded_array_element src_param[4]) {
+  tint_padded_array_element src_function[4] = (tint_padded_array_element[4])0;
+  tint_padded_array_element tint_symbol[4] = (tint_padded_array_element[4])0;
+  const tint_padded_array_element tint_symbol_9[4] = {{1}, {2}, {3}, {3}};
   tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {(tint_padded_array_element[4])0};
+  const tint_padded_array_element src_let[4] = (tint_padded_array_element[4])0;
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
@@ -69,7 +59,7 @@
   tint_symbol = ret_struct_arr().arr;
   tint_symbol = tint_symbol_2(src_uniform, 0u);
   tint_symbol = tint_symbol_4(src_storage, 0u);
-  tint_array_wrapper_1 dst_nested = (tint_array_wrapper_1)0;
-  tint_array_wrapper_1 src_nested = (tint_array_wrapper_1)0;
+  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/array/assign_to_private_var.wgsl.expected.hlsl b/test/array/assign_to_private_var.wgsl.expected.hlsl
index 060ef83..55e7cc6 100644
--- a/test/array/assign_to_private_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_private_var.wgsl.expected.hlsl
@@ -6,49 +6,38 @@
 struct tint_padded_array_element {
   int el;
 };
-struct tint_array_wrapper {
+struct S {
   tint_padded_array_element arr[4];
 };
-struct S {
-  tint_array_wrapper arr;
-};
 
-tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+typedef tint_padded_array_element tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
   const uint scalar_offset_1 = ((offset + 16u)) / 4;
   const uint scalar_offset_2 = ((offset + 32u)) / 4;
   const uint scalar_offset_3 = ((offset + 48u)) / 4;
-  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  const tint_padded_array_element tint_symbol_5[4] = {{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}};
   return tint_symbol_5;
 }
 
-tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+typedef tint_padded_array_element tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_padded_array_element tint_symbol_6[4] = {{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}};
   return tint_symbol_6;
 }
 
-static tint_array_wrapper src_private = (tint_array_wrapper)0;
-groupshared tint_array_wrapper src_workgroup;
+static tint_padded_array_element src_private[4] = (tint_padded_array_element[4])0;
+groupshared tint_padded_array_element src_workgroup[4];
 cbuffer cbuffer_src_uniform : register(b0, space0) {
   uint4 src_uniform[4];
 };
 RWByteAddressBuffer src_storage : register(u1, space0);
-static tint_array_wrapper tint_symbol = (tint_array_wrapper)0;
+static tint_padded_array_element tint_symbol[4] = (tint_padded_array_element[4])0;
+static int dst_nested[4][3][2] = (int[4][3][2])0;
 
-struct tint_array_wrapper_3 {
-  int arr[2];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_3 arr[3];
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper_2 arr[4];
-};
-
-static tint_array_wrapper_1 dst_nested = (tint_array_wrapper_1)0;
-
-tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_7 = {(tint_padded_array_element[4])0};
+typedef tint_padded_array_element ret_arr_ret[4];
+ret_arr_ret ret_arr() {
+  const tint_padded_array_element tint_symbol_7[4] = (tint_padded_array_element[4])0;
   return tint_symbol_7;
 }
 
@@ -57,13 +46,13 @@
   return tint_symbol_8;
 }
 
-void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = (tint_array_wrapper)0;
-  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+void foo(tint_padded_array_element src_param[4]) {
+  tint_padded_array_element src_function[4] = (tint_padded_array_element[4])0;
+  const tint_padded_array_element tint_symbol_9[4] = {{1}, {2}, {3}, {3}};
   tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {(tint_padded_array_element[4])0};
+  const tint_padded_array_element src_let[4] = (tint_padded_array_element[4])0;
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
@@ -71,6 +60,6 @@
   tint_symbol = ret_struct_arr().arr;
   tint_symbol = tint_symbol_2(src_uniform, 0u);
   tint_symbol = tint_symbol_4(src_storage, 0u);
-  tint_array_wrapper_1 src_nested = (tint_array_wrapper_1)0;
+  int src_nested[4][3][2] = (int[4][3][2])0;
   dst_nested = src_nested;
 }
diff --git a/test/array/assign_to_storage_var.wgsl.expected.hlsl b/test/array/assign_to_storage_var.wgsl.expected.hlsl
index 0730f24..bf9232b 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_storage_var.wgsl.expected.hlsl
@@ -6,64 +6,53 @@
 struct tint_padded_array_element {
   int el;
 };
-struct tint_array_wrapper {
+struct S {
   tint_padded_array_element arr[4];
 };
-struct S {
-  tint_array_wrapper arr;
-};
 
-tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+typedef tint_padded_array_element tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
   const uint scalar_offset_1 = ((offset + 16u)) / 4;
   const uint scalar_offset_2 = ((offset + 32u)) / 4;
   const uint scalar_offset_3 = ((offset + 48u)) / 4;
-  const tint_array_wrapper tint_symbol_11 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  const tint_padded_array_element tint_symbol_11[4] = {{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}};
   return tint_symbol_11;
 }
 
-tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_12 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+typedef tint_padded_array_element tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_padded_array_element tint_symbol_12[4] = {{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}};
   return tint_symbol_12;
 }
 
-void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper value) {
-  buffer.Store((offset + 0u), asuint(value.arr[0u].el));
-  buffer.Store((offset + 16u), asuint(value.arr[1u].el));
-  buffer.Store((offset + 32u), asuint(value.arr[2u].el));
-  buffer.Store((offset + 48u), asuint(value.arr[3u].el));
+void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_padded_array_element value[4]) {
+  buffer.Store((offset + 0u), asuint(value[0u].el));
+  buffer.Store((offset + 16u), asuint(value[1u].el));
+  buffer.Store((offset + 32u), asuint(value[2u].el));
+  buffer.Store((offset + 48u), asuint(value[3u].el));
 }
 
-struct tint_array_wrapper_3 {
-  int arr[2];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_3 arr[3];
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper_2 arr[4];
-};
-
-void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_3 value) {
-  buffer.Store((offset + 0u), asuint(value.arr[0u]));
-  buffer.Store((offset + 4u), asuint(value.arr[1u]));
+void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[2]) {
+  buffer.Store((offset + 0u), asuint(value[0u]));
+  buffer.Store((offset + 4u), asuint(value[1u]));
 }
 
-void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_2 value) {
-  tint_symbol_8(buffer, (offset + 0u), value.arr[0u]);
-  tint_symbol_8(buffer, (offset + 8u), value.arr[1u]);
-  tint_symbol_8(buffer, (offset + 16u), value.arr[2u]);
+void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
+  tint_symbol_8(buffer, (offset + 0u), value[0u]);
+  tint_symbol_8(buffer, (offset + 8u), value[1u]);
+  tint_symbol_8(buffer, (offset + 16u), value[2u]);
 }
 
-void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_1 value) {
-  tint_symbol_9(buffer, (offset + 0u), value.arr[0u]);
-  tint_symbol_9(buffer, (offset + 24u), value.arr[1u]);
-  tint_symbol_9(buffer, (offset + 48u), value.arr[2u]);
-  tint_symbol_9(buffer, (offset + 72u), value.arr[3u]);
+void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
+  tint_symbol_9(buffer, (offset + 0u), value[0u]);
+  tint_symbol_9(buffer, (offset + 24u), value[1u]);
+  tint_symbol_9(buffer, (offset + 48u), value[2u]);
+  tint_symbol_9(buffer, (offset + 72u), value[3u]);
 }
 
-static tint_array_wrapper src_private = (tint_array_wrapper)0;
-groupshared tint_array_wrapper src_workgroup;
+static tint_padded_array_element src_private[4] = (tint_padded_array_element[4])0;
+groupshared tint_padded_array_element src_workgroup[4];
 cbuffer cbuffer_src_uniform : register(b0, space0) {
   uint4 src_uniform[4];
 };
@@ -71,8 +60,9 @@
 RWByteAddressBuffer tint_symbol : register(u2, space0);
 RWByteAddressBuffer dst_nested : register(u3, space0);
 
-tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_13 = {(tint_padded_array_element[4])0};
+typedef tint_padded_array_element ret_arr_ret[4];
+ret_arr_ret ret_arr() {
+  const tint_padded_array_element tint_symbol_13[4] = (tint_padded_array_element[4])0;
   return tint_symbol_13;
 }
 
@@ -81,13 +71,13 @@
   return tint_symbol_14;
 }
 
-void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = (tint_array_wrapper)0;
-  const tint_array_wrapper tint_symbol_15 = {{{1}, {2}, {3}, {3}}};
+void foo(tint_padded_array_element src_param[4]) {
+  tint_padded_array_element src_function[4] = (tint_padded_array_element[4])0;
+  const tint_padded_array_element tint_symbol_15[4] = {{1}, {2}, {3}, {3}};
   tint_symbol_6(tint_symbol, 0u, tint_symbol_15);
   tint_symbol_6(tint_symbol, 0u, src_param);
   tint_symbol_6(tint_symbol, 0u, ret_arr());
-  const tint_array_wrapper src_let = {(tint_padded_array_element[4])0};
+  const tint_padded_array_element src_let[4] = (tint_padded_array_element[4])0;
   tint_symbol_6(tint_symbol, 0u, src_let);
   tint_symbol_6(tint_symbol, 0u, src_function);
   tint_symbol_6(tint_symbol, 0u, src_private);
@@ -95,6 +85,6 @@
   tint_symbol_6(tint_symbol, 0u, ret_struct_arr().arr);
   tint_symbol_6(tint_symbol, 0u, tint_symbol_2(src_uniform, 0u));
   tint_symbol_6(tint_symbol, 0u, tint_symbol_4(src_storage, 0u));
-  tint_array_wrapper_1 src_nested = (tint_array_wrapper_1)0;
+  int src_nested[4][3][2] = (int[4][3][2])0;
   tint_symbol_10(dst_nested, 0u, src_nested);
 }
diff --git a/test/array/assign_to_subexpr.wgsl.expected.hlsl b/test/array/assign_to_subexpr.wgsl.expected.hlsl
index a4596c3..38802ee 100644
--- a/test/array/assign_to_subexpr.wgsl.expected.hlsl
+++ b/test/array/assign_to_subexpr.wgsl.expected.hlsl
@@ -3,24 +3,18 @@
   return;
 }
 
-struct tint_array_wrapper {
-  int arr[4];
-};
 struct S {
-  tint_array_wrapper arr;
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper arr[2];
+  int arr[4];
 };
 
 void foo() {
-  const tint_array_wrapper src = {(int[4])0};
-  tint_array_wrapper tint_symbol = (tint_array_wrapper)0;
+  const int src[4] = (int[4])0;
+  int tint_symbol[4] = (int[4])0;
   S dst_struct = (S)0;
-  tint_array_wrapper_1 dst_array = (tint_array_wrapper_1)0;
+  int dst_array[2][4] = (int[2][4])0;
   dst_struct.arr = src;
-  dst_array.arr[1] = src;
+  dst_array[1] = src;
   tint_symbol = src;
   dst_struct.arr = src;
-  dst_array.arr[0] = src;
+  dst_array[0] = src;
 }
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.hlsl b/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
index 52d8984..65d3fc9 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
@@ -6,49 +6,38 @@
 struct tint_padded_array_element {
   int el;
 };
-struct tint_array_wrapper {
+struct S {
   tint_padded_array_element arr[4];
 };
-struct S {
-  tint_array_wrapper arr;
-};
 
-tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+typedef tint_padded_array_element tint_symbol_2_ret[4];
+tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
   const uint scalar_offset = ((offset + 0u)) / 4;
   const uint scalar_offset_1 = ((offset + 16u)) / 4;
   const uint scalar_offset_2 = ((offset + 32u)) / 4;
   const uint scalar_offset_3 = ((offset + 48u)) / 4;
-  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  const tint_padded_array_element tint_symbol_5[4] = {{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}};
   return tint_symbol_5;
 }
 
-tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+typedef tint_padded_array_element tint_symbol_4_ret[4];
+tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_padded_array_element tint_symbol_6[4] = {{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}};
   return tint_symbol_6;
 }
 
-static tint_array_wrapper src_private = (tint_array_wrapper)0;
-groupshared tint_array_wrapper src_workgroup;
+static tint_padded_array_element src_private[4] = (tint_padded_array_element[4])0;
+groupshared tint_padded_array_element src_workgroup[4];
 cbuffer cbuffer_src_uniform : register(b0, space0) {
   uint4 src_uniform[4];
 };
 RWByteAddressBuffer src_storage : register(u1, space0);
-groupshared tint_array_wrapper tint_symbol;
+groupshared tint_padded_array_element tint_symbol[4];
+groupshared int dst_nested[4][3][2];
 
-struct tint_array_wrapper_3 {
-  int arr[2];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_3 arr[3];
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper_2 arr[4];
-};
-
-groupshared tint_array_wrapper_1 dst_nested;
-
-tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_7 = {(tint_padded_array_element[4])0};
+typedef tint_padded_array_element ret_arr_ret[4];
+ret_arr_ret ret_arr() {
+  const tint_padded_array_element tint_symbol_7[4] = (tint_padded_array_element[4])0;
   return tint_symbol_7;
 }
 
@@ -57,13 +46,13 @@
   return tint_symbol_8;
 }
 
-void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = (tint_array_wrapper)0;
-  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+void foo(tint_padded_array_element src_param[4]) {
+  tint_padded_array_element src_function[4] = (tint_padded_array_element[4])0;
+  const tint_padded_array_element tint_symbol_9[4] = {{1}, {2}, {3}, {3}};
   tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {(tint_padded_array_element[4])0};
+  const tint_padded_array_element src_let[4] = (tint_padded_array_element[4])0;
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
@@ -71,6 +60,6 @@
   tint_symbol = ret_struct_arr().arr;
   tint_symbol = tint_symbol_2(src_uniform, 0u);
   tint_symbol = tint_symbol_4(src_storage, 0u);
-  tint_array_wrapper_1 src_nested = (tint_array_wrapper_1)0;
+  int src_nested[4][3][2] = (int[4][3][2])0;
   dst_nested = src_nested;
 }
diff --git a/test/array/function_parameter.wgsl.expected.hlsl b/test/array/function_parameter.wgsl.expected.hlsl
index d7c86d7..b2e7f41 100644
--- a/test/array/function_parameter.wgsl.expected.hlsl
+++ b/test/array/function_parameter.wgsl.expected.hlsl
@@ -1,32 +1,20 @@
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-float f1(tint_array_wrapper a) {
-  return a.arr[3];
+float f1(float a[4]) {
+  return a[3];
 }
 
-struct tint_array_wrapper_1 {
-  tint_array_wrapper arr[3];
-};
-
-float f2(tint_array_wrapper_1 a) {
-  return a.arr[2].arr[3];
+float f2(float a[3][4]) {
+  return a[2][3];
 }
 
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_1 arr[2];
-};
-
-float f3(tint_array_wrapper_2 a) {
-  return a.arr[1].arr[2].arr[3];
+float f3(float a[2][3][4]) {
+  return a[1][2][3];
 }
 
 [numthreads(1, 1, 1)]
 void main() {
-  const tint_array_wrapper a1 = {(float[4])0};
-  const tint_array_wrapper_1 a2 = {(tint_array_wrapper[3])0};
-  const tint_array_wrapper_2 a3 = {(tint_array_wrapper_1[2])0};
+  const float a1[4] = (float[4])0;
+  const float a2[3][4] = (float[3][4])0;
+  const float a3[2][3][4] = (float[2][3][4])0;
   const float v1 = f1(a1);
   const float v2 = f2(a2);
   const float v3 = f3(a3);
diff --git a/test/array/function_return_type.wgsl.expected.hlsl b/test/array/function_return_type.wgsl.expected.hlsl
index c0b9630..8ec30b6 100644
--- a/test/array/function_return_type.wgsl.expected.hlsl
+++ b/test/array/function_return_type.wgsl.expected.hlsl
@@ -1,34 +1,25 @@
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-tint_array_wrapper f1() {
-  const tint_array_wrapper tint_symbol = {(float[4])0};
+typedef float f1_ret[4];
+f1_ret f1() {
+  const float tint_symbol[4] = (float[4])0;
   return tint_symbol;
 }
 
-struct tint_array_wrapper_1 {
-  tint_array_wrapper arr[3];
-};
-
-tint_array_wrapper_1 f2() {
-  const tint_array_wrapper_1 tint_symbol_1 = {{f1(), f1(), f1()}};
+typedef float f2_ret[3][4];
+f2_ret f2() {
+  const float tint_symbol_1[3][4] = {f1(), f1(), f1()};
   return tint_symbol_1;
 }
 
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_1 arr[2];
-};
-
-tint_array_wrapper_2 f3() {
-  const tint_array_wrapper_2 tint_symbol_2 = {{f2(), f2()}};
+typedef float f3_ret[2][3][4];
+f3_ret f3() {
+  const float tint_symbol_2[2][3][4] = {f2(), f2()};
   return tint_symbol_2;
 }
 
 [numthreads(1, 1, 1)]
 void main() {
-  const tint_array_wrapper a1 = f1();
-  const tint_array_wrapper_1 a2 = f2();
-  const tint_array_wrapper_2 a3 = f3();
+  const float a1[4] = f1();
+  const float a2[3][4] = f2();
+  const float a3[2][3][4] = f3();
   return;
 }
diff --git a/test/array/type_constructor.wgsl.expected.hlsl b/test/array/type_constructor.wgsl.expected.hlsl
index ddf6220..8640324 100644
--- a/test/array/type_constructor.wgsl.expected.hlsl
+++ b/test/array/type_constructor.wgsl.expected.hlsl
@@ -1,50 +1,37 @@
-struct tint_array_wrapper {
-  int arr[4];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper arr[3];
-};
-struct tint_array_wrapper_1 {
-  tint_array_wrapper_2 arr[2];
-};
-struct tint_array_wrapper_3 {
-  tint_array_wrapper arr[2];
-};
-
 [numthreads(1, 1, 1)]
 void main() {
   const int x = 42;
-  const tint_array_wrapper empty = {(int[4])0};
-  const tint_array_wrapper nonempty = {{1, 2, 3, 4}};
-  const tint_array_wrapper nonempty_with_expr = {{1, x, (x + 1), nonempty.arr[3]}};
-  const tint_array_wrapper_1 nested_empty = {(tint_array_wrapper_2[2])0};
-  const tint_array_wrapper tint_symbol = {{1, 2, 3, 4}};
-  const tint_array_wrapper tint_symbol_1 = {{5, 6, 7, 8}};
-  const tint_array_wrapper tint_symbol_2 = {{9, 10, 11, 12}};
-  const tint_array_wrapper_2 tint_symbol_3 = {{tint_symbol, tint_symbol_1, tint_symbol_2}};
-  const tint_array_wrapper tint_symbol_4 = {{13, 14, 15, 16}};
-  const tint_array_wrapper tint_symbol_5 = {{17, 18, 19, 20}};
-  const tint_array_wrapper tint_symbol_6 = {{21, 22, 23, 24}};
-  const tint_array_wrapper_2 tint_symbol_7 = {{tint_symbol_4, tint_symbol_5, tint_symbol_6}};
-  const tint_array_wrapper_1 nested_nonempty = {{tint_symbol_3, tint_symbol_7}};
-  const tint_array_wrapper tint_symbol_8 = {{1, 2, x, (x + 1)}};
-  const tint_array_wrapper tint_symbol_9 = {{5, 6, nonempty.arr[2], (nonempty.arr[3] + 1)}};
-  const tint_array_wrapper_2 tint_symbol_10 = {{tint_symbol_8, tint_symbol_9, nonempty}};
-  const tint_array_wrapper_1 nested_nonempty_with_expr = {{tint_symbol_10, nested_nonempty.arr[1]}};
-  const tint_array_wrapper tint_symbol_11 = {(int[4])0};
-  const int subexpr_empty = tint_symbol_11.arr[1];
-  const tint_array_wrapper tint_symbol_12 = {{1, 2, 3, 4}};
-  const int subexpr_nonempty = tint_symbol_12.arr[2];
-  const tint_array_wrapper tint_symbol_13 = {{1, x, (x + 1), nonempty.arr[3]}};
-  const int subexpr_nonempty_with_expr = tint_symbol_13.arr[2];
-  const tint_array_wrapper_3 tint_symbol_14 = {(tint_array_wrapper[2])0};
-  const tint_array_wrapper subexpr_nested_empty = tint_symbol_14.arr[1];
-  const tint_array_wrapper tint_symbol_15 = {{1, 2, 3, 4}};
-  const tint_array_wrapper tint_symbol_16 = {{5, 6, 7, 8}};
-  const tint_array_wrapper_3 tint_symbol_17 = {{tint_symbol_15, tint_symbol_16}};
-  const tint_array_wrapper subexpr_nested_nonempty = tint_symbol_17.arr[1];
-  const tint_array_wrapper tint_symbol_18 = {{1, x, (x + 1), nonempty.arr[3]}};
-  const tint_array_wrapper_3 tint_symbol_19 = {{tint_symbol_18, nested_nonempty.arr[1].arr[2]}};
-  const tint_array_wrapper subexpr_nested_nonempty_with_expr = tint_symbol_19.arr[1];
+  const int empty[4] = (int[4])0;
+  const int nonempty[4] = {1, 2, 3, 4};
+  const int nonempty_with_expr[4] = {1, x, (x + 1), nonempty[3]};
+  const int nested_empty[2][3][4] = (int[2][3][4])0;
+  const int tint_symbol[4] = {1, 2, 3, 4};
+  const int tint_symbol_1[4] = {5, 6, 7, 8};
+  const int tint_symbol_2[4] = {9, 10, 11, 12};
+  const int tint_symbol_3[3][4] = {tint_symbol, tint_symbol_1, tint_symbol_2};
+  const int tint_symbol_4[4] = {13, 14, 15, 16};
+  const int tint_symbol_5[4] = {17, 18, 19, 20};
+  const int tint_symbol_6[4] = {21, 22, 23, 24};
+  const int tint_symbol_7[3][4] = {tint_symbol_4, tint_symbol_5, tint_symbol_6};
+  const int nested_nonempty[2][3][4] = {tint_symbol_3, tint_symbol_7};
+  const int tint_symbol_8[4] = {1, 2, x, (x + 1)};
+  const int tint_symbol_9[4] = {5, 6, nonempty[2], (nonempty[3] + 1)};
+  const int tint_symbol_10[3][4] = {tint_symbol_8, tint_symbol_9, nonempty};
+  const int nested_nonempty_with_expr[2][3][4] = {tint_symbol_10, nested_nonempty[1]};
+  const int tint_symbol_11[4] = (int[4])0;
+  const int subexpr_empty = tint_symbol_11[1];
+  const int tint_symbol_12[4] = {1, 2, 3, 4};
+  const int subexpr_nonempty = tint_symbol_12[2];
+  const int tint_symbol_13[4] = {1, x, (x + 1), nonempty[3]};
+  const int subexpr_nonempty_with_expr = tint_symbol_13[2];
+  const int tint_symbol_14[2][4] = (int[2][4])0;
+  const int subexpr_nested_empty[4] = tint_symbol_14[1];
+  const int tint_symbol_15[4] = {1, 2, 3, 4};
+  const int tint_symbol_16[4] = {5, 6, 7, 8};
+  const int tint_symbol_17[2][4] = {tint_symbol_15, tint_symbol_16};
+  const int subexpr_nested_nonempty[4] = tint_symbol_17[1];
+  const int tint_symbol_18[4] = {1, x, (x + 1), nonempty[3]};
+  const int tint_symbol_19[2][4] = {tint_symbol_18, nested_nonempty[1][2]};
+  const int subexpr_nested_nonempty_with_expr[4] = tint_symbol_19[1];
   return;
 }
diff --git a/test/bug/dawn/947.wgsl.expected.hlsl b/test/bug/dawn/947.wgsl.expected.hlsl
index a8e164a..a65f3b1 100644
--- a/test/bug/dawn/947.wgsl.expected.hlsl
+++ b/test/bug/dawn/947.wgsl.expected.hlsl
@@ -13,15 +13,12 @@
   float2 texcoords : TEXCOORD0;
   float4 position : SV_Position;
 };
-struct tint_array_wrapper {
-  float2 arr[3];
-};
 
 tint_symbol_2 vs_main(tint_symbol_1 tint_symbol) {
   const uint VertexIndex = tint_symbol.VertexIndex;
-  tint_array_wrapper texcoord = {{float2(-0.5f, 0.0f), float2(1.5f, 0.0f), float2(0.5f, 2.0f)}};
+  float2 texcoord[3] = {float2(-0.5f, 0.0f), float2(1.5f, 0.0f), float2(0.5f, 2.0f)};
   VertexOutputs output = (VertexOutputs)0;
-  output.position = float4(((texcoord.arr[VertexIndex] * 2.0f) - float2(1.0f, 1.0f)), 0.0f, 1.0f);
+  output.position = float4(((texcoord[VertexIndex] * 2.0f) - float2(1.0f, 1.0f)), 0.0f, 1.0f);
   const uint scalar_offset = (4u) / 4;
   bool flipY = (asfloat(uniforms[scalar_offset / 4][scalar_offset % 4]) < 0.0f);
   if (flipY) {
@@ -29,13 +26,13 @@
     uint4 ubo_load = uniforms[scalar_offset_1 / 4];
     const uint scalar_offset_2 = (8u) / 4;
     uint4 ubo_load_1 = uniforms[scalar_offset_2 / 4];
-    output.texcoords = ((((texcoord.arr[VertexIndex] * asfloat(((scalar_offset_1 & 2) ? ubo_load.zw : ubo_load.xy))) + asfloat(((scalar_offset_2 & 2) ? ubo_load_1.zw : ubo_load_1.xy))) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f));
+    output.texcoords = ((((texcoord[VertexIndex] * asfloat(((scalar_offset_1 & 2) ? ubo_load.zw : ubo_load.xy))) + asfloat(((scalar_offset_2 & 2) ? ubo_load_1.zw : ubo_load_1.xy))) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f));
   } else {
     const uint scalar_offset_3 = (0u) / 4;
     uint4 ubo_load_2 = uniforms[scalar_offset_3 / 4];
     const uint scalar_offset_4 = (8u) / 4;
     uint4 ubo_load_3 = uniforms[scalar_offset_4 / 4];
-    output.texcoords = ((((texcoord.arr[VertexIndex] * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)) * asfloat(((scalar_offset_3 & 2) ? ubo_load_2.zw : ubo_load_2.xy))) + asfloat(((scalar_offset_4 & 2) ? ubo_load_3.zw : ubo_load_3.xy)));
+    output.texcoords = ((((texcoord[VertexIndex] * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)) * asfloat(((scalar_offset_3 & 2) ? ubo_load_2.zw : ubo_load_2.xy))) + asfloat(((scalar_offset_4 & 2) ? ubo_load_3.zw : ubo_load_3.xy)));
   }
   const tint_symbol_2 tint_symbol_8 = {output.texcoords, output.position};
   return tint_symbol_8;
diff --git a/test/bug/tint/403.wgsl.expected.hlsl b/test/bug/tint/403.wgsl.expected.hlsl
index 5076215..51b6d4e 100644
--- a/test/bug/tint/403.wgsl.expected.hlsl
+++ b/test/bug/tint/403.wgsl.expected.hlsl
@@ -27,19 +27,16 @@
 struct tint_symbol_2 {
   float4 value : SV_Position;
 };
-struct tint_array_wrapper {
-  float2 arr[3];
-};
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
   const uint gl_VertexIndex = tint_symbol.gl_VertexIndex;
-  tint_array_wrapper indexable = (tint_array_wrapper)0;
+  float2 indexable[3] = (float2[3])0;
   const float2x2 x_23 = tint_symbol_4(x_20, 0u);
   const float2x2 x_28 = tint_symbol_6(x_26, 0u);
   const uint x_46 = gl_VertexIndex;
-  const tint_array_wrapper tint_symbol_7 = {{float2(-1.0f, 1.0f), float2(1.0f, 1.0f), float2(-1.0f, -1.0f)}};
+  const float2 tint_symbol_7[3] = {float2(-1.0f, 1.0f), float2(1.0f, 1.0f), float2(-1.0f, -1.0f)};
   indexable = tint_symbol_7;
-  const float2 x_51 = indexable.arr[x_46];
+  const float2 x_51 = indexable[x_46];
   const float2 x_52 = mul(x_51, float2x2((x_23[0u] + x_28[0u]), (x_23[1u] + x_28[1u])));
   const tint_symbol_2 tint_symbol_8 = {float4(x_52.x, x_52.y, 0.0f, 1.0f)};
   return tint_symbol_8;
diff --git a/test/bug/tint/749.spvasm.expected.hlsl b/test/bug/tint/749.spvasm.expected.hlsl
index af27660..5d8b15b 100644
--- a/test/bug/tint/749.spvasm.expected.hlsl
+++ b/test/bug/tint/749.spvasm.expected.hlsl
@@ -1,8 +1,5 @@
-struct tint_array_wrapper {
-  int arr[10];
-};
 struct QuicksortObject {
-  tint_array_wrapper numbers;
+  int numbers[10];
 };
 
 static QuicksortObject obj = (QuicksortObject)0;
@@ -30,10 +27,10 @@
   temp = 0;
   temp = x_935;
   const int x_30_save = x_28;
-  const int x_936 = obj.numbers.arr[x_30_save];
-  obj.numbers.arr[x_30_save] = 0;
-  obj.numbers.arr[x_30_save] = x_936;
-  const int x_31 = obj.numbers.arr[x_30_save];
+  const int x_936 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_936;
+  const int x_31 = obj.numbers[x_30_save];
   const int x_937 = temp;
   temp = 0;
   temp = x_937;
@@ -46,30 +43,30 @@
   i = 0;
   i = x_939;
   const int x_32 = i;
-  const int x_940 = obj.numbers.arr[x_30_save];
-  obj.numbers.arr[x_30_save] = 0;
-  obj.numbers.arr[x_30_save] = x_940;
+  const int x_940 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_940;
   const int x_33 = j;
   const int x_941 = i;
   i = 0;
   i = x_941;
   const float3 x_526 = float3(x_525.x, x_525.z, x_525.z);
-  const int x_942 = obj.numbers.arr[x_30_save];
-  obj.numbers.arr[x_30_save] = 0;
-  obj.numbers.arr[x_30_save] = x_942;
+  const int x_942 = obj.numbers[x_30_save];
+  obj.numbers[x_30_save] = 0;
+  obj.numbers[x_30_save] = x_942;
   const int x_34_save = x_33;
-  const int x_35 = obj.numbers.arr[x_34_save];
+  const int x_35 = obj.numbers[x_34_save];
   const QuicksortObject x_943 = obj;
-  const tint_array_wrapper tint_symbol_5 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_5[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_6 = {tint_symbol_5};
   obj = tint_symbol_6;
   obj = x_943;
   const float2 x_527 = float2(x_526.x, x_526.x);
   const int x_36_save = x_32;
   const float3 x_528 = float3(x_524.x, x_524.z, x_524.x);
-  obj.numbers.arr[x_36_save] = x_35;
+  obj.numbers[x_36_save] = x_35;
   const QuicksortObject x_944 = obj;
-  const tint_array_wrapper tint_symbol_7 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_7[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_8 = {tint_symbol_7};
   obj = tint_symbol_8;
   obj = x_944;
@@ -82,27 +79,27 @@
   temp = 0;
   temp = x_946;
   const float2 x_530 = float2(x_529.z, x_529.y);
-  const int x_947 = obj.numbers.arr[x_34_save];
-  obj.numbers.arr[x_34_save] = 0;
-  obj.numbers.arr[x_34_save] = x_947;
+  const int x_947 = obj.numbers[x_34_save];
+  obj.numbers[x_34_save] = 0;
+  obj.numbers[x_34_save] = x_947;
   const int x_38 = temp;
   const int x_948 = j;
   j = 0;
   j = x_948;
   const float3 x_531 = float3(x_527.x, x_526.y, x_526.x);
-  const int x_949 = obj.numbers.arr[x_36_save];
-  obj.numbers.arr[x_36_save] = 0;
-  obj.numbers.arr[x_36_save] = x_949;
+  const int x_949 = obj.numbers[x_36_save];
+  obj.numbers[x_36_save] = 0;
+  obj.numbers[x_36_save] = x_949;
   const QuicksortObject x_950 = obj;
-  const tint_array_wrapper tint_symbol_9 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_9[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_10 = {tint_symbol_9};
   obj = tint_symbol_10;
   obj = x_950;
   const float3 x_532 = float3(x_528.x, x_528.y, x_528.x);
-  const int x_951 = obj.numbers.arr[x_34_save];
-  obj.numbers.arr[x_34_save] = 0;
-  obj.numbers.arr[x_34_save] = x_951;
-  obj.numbers.arr[x_37] = x_38;
+  const int x_951 = 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;
 }
 
@@ -124,10 +121,10 @@
   l = 0;
   l = x_953;
   const int x_42_save = x_41;
-  const int x_954 = obj.numbers.arr[x_42_save];
-  obj.numbers.arr[x_42_save] = 0;
-  obj.numbers.arr[x_42_save] = x_954;
-  const int x_43 = obj.numbers.arr[x_42_save];
+  const int x_954 = obj.numbers[x_42_save];
+  obj.numbers[x_42_save] = 0;
+  obj.numbers[x_42_save] = x_954;
+  const int x_43 = obj.numbers[x_42_save];
   const int x_955 = param_3;
   param_3 = 0;
   param_3 = x_955;
@@ -152,7 +149,7 @@
   const float3 x_536 = float3(x_534.x, x_534.z, x_535.x);
   j_1 = 10;
   const QuicksortObject x_960 = obj;
-  const tint_array_wrapper tint_symbol_11 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_11[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_12 = {tint_symbol_11};
   obj = tint_symbol_12;
   obj = x_960;
@@ -169,7 +166,7 @@
     pivot = x_963;
     x_537 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
     const QuicksortObject x_964 = obj;
-    const tint_array_wrapper tint_symbol_13 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_13[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_14 = {tint_symbol_13};
     obj = tint_symbol_14;
     obj = x_964;
@@ -192,9 +189,9 @@
       break;
     }
     const int x_60 = j_1;
-    const int x_969 = obj.numbers.arr[x_42_save];
-    obj.numbers.arr[x_42_save] = 0;
-    obj.numbers.arr[x_42_save] = x_969;
+    const int x_969 = obj.numbers[x_42_save];
+    obj.numbers[x_42_save] = 0;
+    obj.numbers[x_42_save] = x_969;
     const int x_61_save = x_60;
     const int x_970 = h;
     h = 0;
@@ -203,9 +200,9 @@
     const int x_971 = param_1;
     param_1 = 0;
     param_1 = x_971;
-    const int x_62 = obj.numbers.arr[x_61_save];
+    const int x_62 = obj.numbers[x_61_save];
     const QuicksortObject x_972 = obj;
-    const tint_array_wrapper tint_symbol_15 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_15[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_16 = {tint_symbol_15};
     obj = tint_symbol_16;
     obj = x_972;
@@ -265,7 +262,7 @@
       param_1 = x_985;
     }
     const QuicksortObject x_986 = obj;
-    const tint_array_wrapper tint_symbol_17 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_17[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_18 = {tint_symbol_17};
     obj = tint_symbol_18;
     obj = x_986;
@@ -278,9 +275,9 @@
       h = 0;
       h = x_988;
       const float3 x_547 = float3(x_539.x, x_541.z, x_541.z);
-      const int x_989 = obj.numbers.arr[x_61_save];
-      obj.numbers.arr[x_61_save] = 0;
-      obj.numbers.arr[x_61_save] = x_989;
+      const int x_989 = obj.numbers[x_61_save];
+      obj.numbers[x_61_save] = 0;
+      obj.numbers[x_61_save] = x_989;
       const int x_990 = param;
       param = 0;
       param = x_990;
@@ -289,18 +286,18 @@
       param_1 = 0;
       param_1 = x_991;
       const float3 x_548 = float3(x_541.y, x_541.z, x_541.x);
-      const int x_992 = obj.numbers.arr[x_61_save];
-      obj.numbers.arr[x_61_save] = 0;
-      obj.numbers.arr[x_61_save] = x_992;
+      const int x_992 = obj.numbers[x_61_save];
+      obj.numbers[x_61_save] = 0;
+      obj.numbers[x_61_save] = x_992;
     }
   }
   const int x_76 = i_1;
-  const int x_993 = obj.numbers.arr[x_42_save];
-  obj.numbers.arr[x_42_save] = 0;
-  obj.numbers.arr[x_42_save] = x_993;
+  const int x_993 = obj.numbers[x_42_save];
+  obj.numbers[x_42_save] = 0;
+  obj.numbers[x_42_save] = x_993;
   const float2 x_549 = float2(x_534.x, x_534.y);
   const QuicksortObject x_994 = obj;
-  const tint_array_wrapper tint_symbol_19 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_19[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_20 = {tint_symbol_19};
   obj = tint_symbol_20;
   obj = x_994;
@@ -362,15 +359,15 @@
   int p = 0;
   int l_1 = 0;
   int top = 0;
-  tint_array_wrapper stack = (tint_array_wrapper)0;
+  int stack[10] = (int[10])0;
   int param_5 = 0;
   l_1 = 0;
   const int x_1007 = param_5;
   param_5 = 0;
   param_5 = x_1007;
   h_1 = 9;
-  const tint_array_wrapper x_1008 = stack;
-  const tint_array_wrapper tint_symbol_21 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int x_1008[10] = stack;
+  const int tint_symbol_21[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   stack = tint_symbol_21;
   stack = x_1008;
   const float2 x_556 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y);
@@ -404,21 +401,21 @@
   param_4 = x_1015;
   const int x_95 = l_1;
   const QuicksortObject x_1016 = obj;
-  const tint_array_wrapper tint_symbol_22 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_22[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_23 = {tint_symbol_22};
   obj = tint_symbol_23;
   obj = x_1016;
   const float3 x_560 = float3(x_559.y, x_559.x, x_557.x);
   const int x_96_save = x_94;
-  const tint_array_wrapper x_1017 = stack;
-  const tint_array_wrapper tint_symbol_24 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int x_1017[10] = stack;
+  const int tint_symbol_24[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   stack = tint_symbol_24;
   stack = x_1017;
   const float3 x_561 = float3(x_556.y, x_556.y, x_556.y);
   const int x_1018 = l_1;
   l_1 = 0;
   l_1 = 0;
-  stack.arr[x_96_save] = x_95;
+  stack[x_96_save] = x_95;
   const int x_1019 = param_5;
   param_5 = 0;
   param_5 = x_1019;
@@ -427,13 +424,13 @@
   param_4 = 0;
   param_4 = x_1020;
   const float3 x_562 = float3(float3(1.0f, 2.0f, 3.0f).z, x_558.y, float3(1.0f, 2.0f, 3.0f).y);
-  const int x_1021 = stack.arr[x_96_save];
-  stack.arr[x_96_save] = 0;
-  stack.arr[x_96_save] = x_1021;
+  const int x_1021 = stack[x_96_save];
+  stack[x_96_save] = 0;
+  stack[x_96_save] = x_1021;
   const int x_98 = (x_97 + 1);
-  const int x_1022 = stack.arr[x_96_save];
-  stack.arr[x_96_save] = 0;
-  stack.arr[x_96_save] = x_1022;
+  const int x_1022 = stack[x_96_save];
+  stack[x_96_save] = 0;
+  stack[x_96_save] = x_1022;
   const float3 x_563 = float3(x_559.x, x_559.z, x_556.y);
   top = x_98;
   const int x_1023 = param_4;
@@ -455,19 +452,19 @@
   const int x_1027 = p;
   p = 0;
   p = x_1027;
-  stack.arr[x_100_save] = x_99;
+  stack[x_100_save] = x_99;
   while (true) {
     const float3 x_566 = float3(x_563.x, x_563.x, x_563.x);
     const int x_1028 = h_1;
     h_1 = 0;
     h_1 = x_1028;
-    const tint_array_wrapper x_1029 = stack;
-    const tint_array_wrapper tint_symbol_25 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int x_1029[10] = stack;
+    const int tint_symbol_25[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     stack = tint_symbol_25;
     stack = x_1029;
     const int x_106 = top;
-    const tint_array_wrapper x_1030 = stack;
-    const tint_array_wrapper tint_symbol_26 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int x_1030[10] = stack;
+    const int tint_symbol_26[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     stack = tint_symbol_26;
     stack = x_1030;
     const float2 x_567 = float2(x_558.x, x_564.z);
@@ -479,7 +476,7 @@
       break;
     }
     const QuicksortObject x_1032 = obj;
-    const tint_array_wrapper tint_symbol_27 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_27[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_28 = {tint_symbol_27};
     obj = tint_symbol_28;
     obj = x_1032;
@@ -501,12 +498,12 @@
     p = 0;
     p = x_1036;
     const int x_110_save = x_108;
-    const int x_1037 = stack.arr[x_96_save];
-    stack.arr[x_96_save] = 0;
-    stack.arr[x_96_save] = x_1037;
-    const int x_111 = stack.arr[x_110_save];
-    const tint_array_wrapper x_1038 = stack;
-    const tint_array_wrapper tint_symbol_29 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int x_1037 = stack[x_96_save];
+    stack[x_96_save] = 0;
+    stack[x_96_save] = x_1037;
+    const int x_111 = stack[x_110_save];
+    const int x_1038[10] = stack;
+    const int tint_symbol_29[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     stack = tint_symbol_29;
     stack = x_1038;
     const float3 x_571 = float3(x_559.y, x_559.x, x_564.y);
@@ -514,8 +511,8 @@
     l_1 = 0;
     l_1 = x_1039;
     h_1 = x_111;
-    const tint_array_wrapper x_1040 = stack;
-    const tint_array_wrapper tint_symbol_30 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int x_1040[10] = stack;
+    const int tint_symbol_30[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     stack = tint_symbol_30;
     stack = x_1040;
     const float2 x_572 = float2(x_562.y, x_561.y);
@@ -526,9 +523,9 @@
     const int x_1042 = param_4;
     param_4 = 0;
     param_4 = x_1042;
-    const int x_1043 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1043;
+    const int x_1043 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1043;
     const float2 x_573 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
     top = (x_112 - 1);
     const int x_1044 = param_5;
@@ -540,10 +537,10 @@
     h_1 = x_1045;
     const int x_114_save = x_112;
     const float2 x_575 = float2(x_564.y, x_564.z);
-    const int x_1046 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1046;
-    const int x_115 = stack.arr[x_114_save];
+    const int x_1046 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1046;
+    const int x_115 = stack[x_114_save];
     const int x_1047 = p;
     p = 0;
     p = x_1047;
@@ -556,16 +553,16 @@
     top = 0;
     top = x_1049;
     param_4 = l_1;
-    const int x_1050 = stack.arr[x_110_save];
-    stack.arr[x_110_save] = 0;
-    stack.arr[x_110_save] = x_1050;
+    const int x_1050 = stack[x_110_save];
+    stack[x_110_save] = 0;
+    stack[x_110_save] = x_1050;
     const float2 x_577 = float2(x_569.y, x_569.z);
     const int x_120 = h_1;
     const float2 x_578 = float2(x_558.x, float3(1.0f, 2.0f, 3.0f).y);
     param_5 = x_120;
-    const int x_1051 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1051;
+    const int x_1051 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1051;
     const int x_121 = performPartition_i1_i1_(param_4, param_5);
     const float2 x_579 = float2(x_567.x, x_568.x);
     const int x_1052 = param_5;
@@ -587,140 +584,140 @@
     h_1 = 0;
     h_1 = x_1056;
     const int x_124 = l_1;
-    const int x_1057 = stack.arr[x_110_save];
-    stack.arr[x_110_save] = 0;
-    stack.arr[x_110_save] = x_1057;
+    const int x_1057 = stack[x_110_save];
+    stack[x_110_save] = 0;
+    stack[x_110_save] = x_1057;
     const int x_1058 = h_1;
     h_1 = 0;
     h_1 = x_1058;
     const float2 x_582 = float2(x_567.y, x_573.x);
-    const int x_1059 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1059;
+    const int x_1059 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1059;
     if (((x_122 - asint(1u)) > x_124)) {
       const int x_1060 = param_4;
       param_4 = 0;
       param_4 = x_1060;
       const int x_128 = top;
       const float2 x_583 = float2(x_571.y, x_556.y);
-      const int x_1061 = stack.arr[x_100_save];
-      stack.arr[x_100_save] = 0;
-      stack.arr[x_100_save] = x_1061;
-      const tint_array_wrapper x_1062 = stack;
-      const tint_array_wrapper tint_symbol_31 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      const int x_1061 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1061;
+      const int x_1062[10] = stack;
+      const int tint_symbol_31[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       stack = tint_symbol_31;
       stack = x_1062;
       const float2 x_584 = float2(x_569.z, x_569.y);
       const float3 x_585 = float3(x_580.y, x_577.x, x_577.x);
       const int x_130 = l_1;
-      const int x_1063 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1063;
+      const int x_1063 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1063;
       const float2 x_586 = float2(x_564.x, x_585.x);
       const int x_1064 = param_5;
       param_5 = 0;
       param_5 = x_1064;
       const int x_131_save = (1 + x_128);
-      const int x_1065 = stack.arr[x_110_save];
-      stack.arr[x_110_save] = 0;
-      stack.arr[x_110_save] = x_1065;
+      const int x_1065 = stack[x_110_save];
+      stack[x_110_save] = 0;
+      stack[x_110_save] = x_1065;
       const float3 x_587 = float3(x_566.y, x_566.y, x_563.x);
       const int x_1066 = param_5;
       param_5 = 0;
       param_5 = x_1066;
-      stack.arr[x_131_save] = x_130;
+      stack[x_131_save] = x_130;
       const int x_132 = top;
-      const int x_1067 = stack.arr[x_100_save];
-      stack.arr[x_100_save] = 0;
-      stack.arr[x_100_save] = x_1067;
+      const int x_1067 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1067;
       const float2 x_588 = float2(x_575.y, x_575.x);
-      const int x_1068 = stack.arr[x_131_save];
-      stack.arr[x_131_save] = 0;
-      stack.arr[x_131_save] = x_1068;
+      const int x_1068 = stack[x_131_save];
+      stack[x_131_save] = 0;
+      stack[x_131_save] = x_1068;
       const int x_133 = asint((1u + asuint(x_132)));
-      const int x_1069 = stack.arr[x_100_save];
-      stack.arr[x_100_save] = 0;
-      stack.arr[x_100_save] = x_1069;
+      const int x_1069 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1069;
       const float3 x_589 = float3(x_576.z, x_588.y, x_576.z);
       const int x_1070 = h_1;
       h_1 = 0;
       h_1 = x_1070;
       top = x_133;
-      const tint_array_wrapper x_1071 = stack;
-      const tint_array_wrapper tint_symbol_32 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      const int x_1071[10] = stack;
+      const int tint_symbol_32[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       stack = tint_symbol_32;
       stack = x_1071;
       const int x_134 = p;
       const float2 x_590 = float2(x_576.x, x_573.y);
-      const int x_1072 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1072;
+      const int x_1072 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1072;
       const int x_136_save = x_133;
-      const int x_1073 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1073;
-      stack.arr[x_136_save] = (x_134 - asint(1u));
-      const int x_1074 = stack.arr[x_96_save];
-      stack.arr[x_96_save] = 0;
-      stack.arr[x_96_save] = x_1074;
+      const int x_1073 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1073;
+      stack[x_136_save] = (x_134 - asint(1u));
+      const int x_1074 = stack[x_96_save];
+      stack[x_96_save] = 0;
+      stack[x_96_save] = x_1074;
       const float2 x_591 = float2(x_569.z, x_569.y);
-      const int x_1075 = stack.arr[x_136_save];
-      stack.arr[x_136_save] = 0;
-      stack.arr[x_136_save] = x_1075;
+      const int x_1075 = stack[x_136_save];
+      stack[x_136_save] = 0;
+      stack[x_136_save] = x_1075;
     }
-    const int x_1076 = stack.arr[x_96_save];
-    stack.arr[x_96_save] = 0;
-    stack.arr[x_96_save] = x_1076;
+    const int x_1076 = stack[x_96_save];
+    stack[x_96_save] = 0;
+    stack[x_96_save] = x_1076;
     const float2 x_592 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).y);
     const QuicksortObject x_1077 = obj;
-    const tint_array_wrapper tint_symbol_33 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_33[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_34 = {tint_symbol_33};
     obj = tint_symbol_34;
     obj = x_1077;
     const int x_137 = p;
-    const int x_1078 = stack.arr[x_114_save];
-    stack.arr[x_114_save] = 0;
-    stack.arr[x_114_save] = x_1078;
+    const int x_1078 = stack[x_114_save];
+    stack[x_114_save] = 0;
+    stack[x_114_save] = x_1078;
     const float3 x_593 = float3(x_571.z, x_556.x, x_556.y);
     const int x_1079 = p;
     p = 0;
     p = x_1079;
     const float3 x_594 = float3(x_563.z, x_563.x, x_575.x);
-    const int x_1080 = stack.arr[x_114_save];
-    stack.arr[x_114_save] = 0;
-    stack.arr[x_114_save] = x_1080;
+    const int x_1080 = stack[x_114_save];
+    stack[x_114_save] = 0;
+    stack[x_114_save] = x_1080;
     const int x_139 = h_1;
     const int x_1081 = top;
     top = 0;
     top = x_1081;
     const float3 x_595 = float3(x_560.z, x_568.x, x_560.x);
-    const int x_1082 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1082;
+    const int x_1082 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1082;
     const int x_1083 = p;
     p = 0;
     p = x_1083;
     if ((asint((1u + asuint(x_137))) < x_139)) {
-      const int x_1084 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1084;
+      const int x_1084 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1084;
       const float2 x_596 = float2(x_592.y, x_582.x);
       const int x_1085 = l_1;
       l_1 = 0;
       l_1 = x_1085;
       const int x_143 = top;
-      const int x_1086 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1086;
+      const int x_1086 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1086;
       const float3 x_597 = float3(x_562.y, x_560.y, x_560.y);
       const int x_144 = (x_143 + 1);
       const int x_1087 = param_5;
       param_5 = 0;
       param_5 = x_1087;
       top = x_144;
-      const int x_1088 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1088;
+      const int x_1088 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1088;
       const int x_145 = p;
       const int x_1089 = param_5;
       param_5 = 0;
@@ -730,62 +727,62 @@
       p = 0;
       p = x_1090;
       const float3 x_600 = float3(x_556.x, x_580.x, x_580.x);
-      const int x_1091 = stack.arr[x_100_save];
-      stack.arr[x_100_save] = 0;
-      stack.arr[x_100_save] = x_1091;
+      const int x_1091 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1091;
       const int x_147_save = x_144;
-      const int x_1092 = stack.arr[x_110_save];
-      stack.arr[x_110_save] = 0;
-      stack.arr[x_110_save] = x_1092;
+      const int x_1092 = stack[x_110_save];
+      stack[x_110_save] = 0;
+      stack[x_110_save] = x_1092;
       const float2 x_601 = float2(x_563.x, x_563.y);
-      stack.arr[x_147_save] = asint((1u + asuint(x_145)));
-      const tint_array_wrapper x_1093 = stack;
-      const tint_array_wrapper tint_symbol_35 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack[x_147_save] = asint((1u + asuint(x_145)));
+      const int x_1093[10] = stack;
+      const int tint_symbol_35[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       stack = tint_symbol_35;
       stack = x_1093;
       const int x_148 = top;
-      const int x_1094 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1094;
+      const int x_1094 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1094;
       const float2 x_602 = float2(x_565.y, x_599.y);
-      const tint_array_wrapper x_1095 = stack;
-      const tint_array_wrapper tint_symbol_36 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      const int x_1095[10] = stack;
+      const int tint_symbol_36[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       stack = tint_symbol_36;
       stack = x_1095;
       const int x_149 = (x_148 + asint(1u));
-      const int x_1096 = stack.arr[x_147_save];
-      stack.arr[x_147_save] = 0;
-      stack.arr[x_147_save] = x_1096;
+      const int x_1096 = stack[x_147_save];
+      stack[x_147_save] = 0;
+      stack[x_147_save] = x_1096;
       top = x_149;
       const int x_1097 = param_4;
       param_4 = 0;
       param_4 = x_1097;
       const int x_150 = h_1;
-      const int x_1098 = stack.arr[x_100_save];
-      stack.arr[x_100_save] = 0;
-      stack.arr[x_100_save] = x_1098;
-      const int x_1099 = stack.arr[x_96_save];
-      stack.arr[x_96_save] = 0;
-      stack.arr[x_96_save] = x_1099;
-      stack.arr[x_149] = x_150;
-      const int x_1100 = stack.arr[x_114_save];
-      stack.arr[x_114_save] = 0;
-      stack.arr[x_114_save] = x_1100;
+      const int x_1098 = stack[x_100_save];
+      stack[x_100_save] = 0;
+      stack[x_100_save] = x_1098;
+      const int x_1099 = stack[x_96_save];
+      stack[x_96_save] = 0;
+      stack[x_96_save] = x_1099;
+      stack[x_149] = x_150;
+      const int x_1100 = stack[x_114_save];
+      stack[x_114_save] = 0;
+      stack[x_114_save] = x_1100;
       const float3 x_603 = float3(x_568.y, x_564.x, x_564.x);
       const int x_1101 = l_1;
       l_1 = 0;
       l_1 = x_1101;
     }
-    const int x_1102 = stack.arr[x_100_save];
-    stack.arr[x_100_save] = 0;
-    stack.arr[x_100_save] = x_1102;
+    const int x_1102 = stack[x_100_save];
+    stack[x_100_save] = 0;
+    stack[x_100_save] = x_1102;
     {
       const int x_1103 = l_1;
       l_1 = 0;
       l_1 = x_1103;
       const float2 x_604 = float2(x_563.z, x_564.x);
       const QuicksortObject x_1104 = obj;
-      const tint_array_wrapper tint_symbol_37 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      const int tint_symbol_37[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
       const QuicksortObject tint_symbol_38 = {tint_symbol_37};
       obj = tint_symbol_38;
       obj = x_1104;
@@ -806,13 +803,13 @@
   uv = x_717;
   i_2 = 0;
   const QuicksortObject x_721 = obj;
-  const tint_array_wrapper tint_symbol_39 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_39[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_40 = {tint_symbol_39};
   obj = tint_symbol_40;
   obj = x_721;
   if (true) {
     const QuicksortObject x_722 = obj;
-    const tint_array_wrapper tint_symbol_41 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_41[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_42 = {tint_symbol_41};
     obj = tint_symbol_42;
     obj = x_722;
@@ -826,13 +823,13 @@
     color = x_725;
     const float2 x_432 = float2(x_431.y, x_431.y);
     const QuicksortObject x_726 = obj;
-    const tint_array_wrapper tint_symbol_43 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_43[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_44 = {tint_symbol_43};
     obj = tint_symbol_44;
     obj = x_726;
   }
   const QuicksortObject x_756 = obj;
-  const tint_array_wrapper tint_symbol_45 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_45[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_46 = {tint_symbol_45};
   obj = tint_symbol_46;
   obj = x_756;
@@ -842,7 +839,7 @@
   i_2 = x_757;
   quicksort_();
   const QuicksortObject x_758 = obj;
-  const tint_array_wrapper tint_symbol_47 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_47[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_48 = {tint_symbol_47};
   obj = tint_symbol_48;
   obj = x_758;
@@ -857,7 +854,7 @@
   const float2 x_185 = float2(x_184.x, x_184.y);
   const float3 x_448 = float3(x_185.y, x_446.y, x_446.y);
   const QuicksortObject x_761 = obj;
-  const tint_array_wrapper tint_symbol_49 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_49[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_50 = {tint_symbol_49};
   obj = tint_symbol_50;
   obj = x_761;
@@ -868,7 +865,7 @@
   uint4 ubo_load = x_188[scalar_offset / 4];
   const float2 x_191 = asfloat(((scalar_offset & 2) ? ubo_load.zw : ubo_load.xy));
   const QuicksortObject x_763 = obj;
-  const tint_array_wrapper tint_symbol_51 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_51[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_52 = {tint_symbol_51};
   obj = tint_symbol_52;
   obj = x_763;
@@ -878,7 +875,7 @@
   color = x_764;
   const float2 x_192 = (x_185 / x_191);
   const QuicksortObject x_765 = obj;
-  const tint_array_wrapper tint_symbol_53 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_53[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_54 = {tint_symbol_53};
   obj = tint_symbol_54;
   obj = x_765;
@@ -896,22 +893,22 @@
   color = x_768;
   const float3 x_451 = float3(x_185.x, x_185.y, x_446.y);
   const QuicksortObject x_769 = obj;
-  const tint_array_wrapper tint_symbol_55 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_55[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_56 = {tint_symbol_55};
   obj = tint_symbol_56;
   obj = x_769;
-  const int x_770 = obj.numbers.arr[0u];
-  obj.numbers.arr[0u] = 0;
-  obj.numbers.arr[0u] = x_770;
-  const int x_201 = obj.numbers.arr[0u];
+  const int x_770 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_770;
+  const int x_201 = obj.numbers[0u];
   const QuicksortObject x_771 = obj;
-  const tint_array_wrapper tint_symbol_57 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_57[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_58 = {tint_symbol_57};
   obj = tint_symbol_58;
   obj = x_771;
-  const int x_772 = obj.numbers.arr[0u];
-  obj.numbers.arr[0u] = 0;
-  obj.numbers.arr[0u] = x_772;
+  const int x_772 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_772;
   const float x_206 = color.x;
   const float x_773 = color.x;
   color.x = 0.0f;
@@ -921,7 +918,7 @@
   i_2 = 0;
   i_2 = x_774;
   const QuicksortObject x_775 = obj;
-  const tint_array_wrapper tint_symbol_59 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_59[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_60 = {tint_symbol_59};
   obj = tint_symbol_60;
   obj = x_775;
@@ -940,7 +937,7 @@
   uv.x = 0.0f;
   uv.x = x_778;
   const QuicksortObject x_779 = obj;
-  const tint_array_wrapper tint_symbol_61 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_61[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_62 = {tint_symbol_61};
   obj = tint_symbol_62;
   obj = x_779;
@@ -948,16 +945,16 @@
     const int x_780 = i_2;
     i_2 = 0;
     i_2 = x_780;
-    const int x_781 = obj.numbers.arr[0u];
-    obj.numbers.arr[0u] = 0;
-    obj.numbers.arr[0u] = x_781;
+    const int x_781 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_781;
     const float3 x_456 = float3(float2(0.0f, 0.0f).y, x_448.y, x_448.y);
     const float x_782 = uv.x;
     uv.x = 0.0f;
     uv.x = x_782;
-    const int x_216 = obj.numbers.arr[1];
+    const int x_216 = obj.numbers[1];
     const QuicksortObject x_783 = obj;
-    const tint_array_wrapper tint_symbol_63 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_63[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_64 = {tint_symbol_63};
     obj = tint_symbol_64;
     obj = x_783;
@@ -966,7 +963,7 @@
     uv = float2(0.0f, 0.0f);
     uv = x_784;
     const QuicksortObject x_785 = obj;
-    const tint_array_wrapper tint_symbol_65 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_65[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_66 = {tint_symbol_65};
     obj = tint_symbol_66;
     obj = x_785;
@@ -989,9 +986,9 @@
     color[0] = 0.0f;
     color[0] = x_790;
     color.x = (float(x_216) + x_219);
-    const int x_791 = obj.numbers.arr[0u];
-    obj.numbers.arr[0u] = 0;
-    obj.numbers.arr[0u] = x_791;
+    const int x_791 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_791;
   }
   const float x_792 = uv.x;
   uv.x = 0.0f;
@@ -1029,24 +1026,24 @@
     const float x_801 = color.x;
     color.x = 0.0f;
     color.x = x_801;
-    const int x_230 = obj.numbers.arr[2u];
+    const int x_230 = obj.numbers[2u];
     const float x_802 = uv.x;
     uv.x = 0.0f;
     uv.x = x_802;
     const float x_803 = color.x;
     color.x = 0.0f;
     color.x = x_803;
-    const int x_804 = obj.numbers.arr[2u];
-    obj.numbers.arr[2u] = 0;
-    obj.numbers.arr[2u] = x_804;
+    const int x_804 = obj.numbers[2u];
+    obj.numbers[2u] = 0;
+    obj.numbers[2u] = x_804;
     const float2 x_464 = float2(x_450.y, x_191.x);
     const float x_805 = color.y;
     color.y = 0.0f;
     color.y = x_805;
     const float x_234 = color.y;
-    const int x_806 = obj.numbers.arr[2u];
-    obj.numbers.arr[2u] = 0;
-    obj.numbers.arr[2u] = x_806;
+    const int x_806 = obj.numbers[2u];
+    obj.numbers[2u] = 0;
+    obj.numbers[2u] = x_806;
     const float2 x_465 = float2(x_463.x, x_185.x);
     const float x_807 = color.x;
     color.x = 0.0f;
@@ -1081,12 +1078,12 @@
     const float x_815 = color.x;
     color.x = 0.0f;
     color.x = x_815;
-    const int x_245 = obj.numbers.arr[3];
+    const int x_245 = obj.numbers[3];
     const float x_816 = color.x;
     color.x = 0.0f;
     color.x = x_816;
     const QuicksortObject x_817 = obj;
-    const tint_array_wrapper tint_symbol_67 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_67[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_68 = {tint_symbol_67};
     obj = tint_symbol_68;
     obj = x_817;
@@ -1105,9 +1102,9 @@
     const float x_821 = color.z;
     color.z = 0.0f;
     color.z = x_821;
-    const int x_822 = obj.numbers.arr[0u];
-    obj.numbers.arr[0u] = 0;
-    obj.numbers.arr[0u] = x_822;
+    const int x_822 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_822;
     const float2 x_470 = float2(float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).y);
     const float x_823 = color.z;
     color.z = 0.0f;
@@ -1122,7 +1119,7 @@
   uv[0] = 0.0f;
   uv[0] = x_825;
   const float3 x_472 = float3(x_454.x, x_454.y, x_454.y);
-  const int x_254 = obj.numbers.arr[4];
+  const int x_254 = obj.numbers[4];
   const float x_826 = uv[0];
   uv[0] = 0.0f;
   uv[0] = x_826;
@@ -1130,9 +1127,9 @@
   color = float3(0.0f, 0.0f, 0.0f);
   color = x_827;
   const float3 x_473 = float3(x_446.y, x_453.x, x_453.x);
-  const int x_828 = obj.numbers.arr[4];
-  obj.numbers.arr[4] = 0;
-  obj.numbers.arr[4] = x_828;
+  const int x_828 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_828;
   const float2 x_474 = float2(x_191.x, x_184.z);
   const float x_829 = uv.x;
   uv.x = 0.0f;
@@ -1166,9 +1163,9 @@
   i_2 = 0;
   i_2 = x_836;
   const float3 x_479 = float3(float2(0.0f, 0.0f).y, x_454.y, float2(0.0f, 0.0f).x);
-  const int x_837 = obj.numbers.arr[0u];
-  obj.numbers.arr[0u] = 0;
-  obj.numbers.arr[0u] = x_837;
+  const int x_837 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_837;
   const float x_838 = color.y;
   color.y = 0.0f;
   color.y = x_838;
@@ -1181,7 +1178,7 @@
     const float3 x_840 = color;
     color = float3(0.0f, 0.0f, 0.0f);
     color = x_840;
-    const int x_267 = obj.numbers.arr[5u];
+    const int x_267 = obj.numbers[5u];
     const float x_841 = color.x;
     color.x = 0.0f;
     color.x = x_841;
@@ -1197,7 +1194,7 @@
     uv[0] = x_844;
     const float3 x_482 = float3(x_455.x, x_475.y, x_455.y);
     const QuicksortObject x_845 = obj;
-    const tint_array_wrapper tint_symbol_69 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_69[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_70 = {tint_symbol_69};
     obj = tint_symbol_70;
     obj = x_845;
@@ -1224,13 +1221,13 @@
   const float x_851 = uv.y;
   uv.y = 0.0f;
   uv.y = x_851;
-  const int x_852 = obj.numbers.arr[4];
-  obj.numbers.arr[4] = 0;
-  obj.numbers.arr[4] = x_852;
+  const int x_852 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_852;
   const float x_274 = uv.y;
-  const int x_853 = obj.numbers.arr[0u];
-  obj.numbers.arr[0u] = 0;
-  obj.numbers.arr[0u] = x_853;
+  const int x_853 = obj.numbers[0u];
+  obj.numbers[0u] = 0;
+  obj.numbers[0u] = x_853;
   if ((x_274 > 0.5f)) {
     const float x_854 = uv.x;
     uv.x = 0.0f;
@@ -1243,16 +1240,16 @@
     const float x_856 = uv.y;
     uv.y = 0.0f;
     uv.y = x_856;
-    const int x_280 = obj.numbers.arr[6u];
+    const int x_280 = obj.numbers[6u];
     const float x_857 = uv.y;
     uv.y = 0.0f;
     uv.y = x_857;
     const int x_858 = i_2;
     i_2 = 0;
     i_2 = x_858;
-    const int x_859 = obj.numbers.arr[4];
-    obj.numbers.arr[4] = 0;
-    obj.numbers.arr[4] = x_859;
+    const int x_859 = obj.numbers[4];
+    obj.numbers[4] = 0;
+    obj.numbers[4] = x_859;
     const float2 x_488 = float2(x_473.z, x_473.y);
     const float x_283 = color.y;
     const float2 x_860 = uv;
@@ -1262,15 +1259,15 @@
     color.x = 0.0f;
     color.x = x_861;
     const float2 x_489 = float2(x_475.y, x_475.x);
-    const int x_862 = obj.numbers.arr[6u];
-    obj.numbers.arr[6u] = 0;
-    obj.numbers.arr[6u] = x_862;
-    const int x_863 = obj.numbers.arr[6u];
-    obj.numbers.arr[6u] = 0;
-    obj.numbers.arr[6u] = x_863;
+    const int x_862 = obj.numbers[6u];
+    obj.numbers[6u] = 0;
+    obj.numbers[6u] = x_862;
+    const int x_863 = obj.numbers[6u];
+    obj.numbers[6u] = 0;
+    obj.numbers[6u] = x_863;
     const float2 x_490 = float2(x_480.z, x_480.z);
     const QuicksortObject x_864 = obj;
-    const tint_array_wrapper tint_symbol_71 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_71[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_72 = {tint_symbol_71};
     obj = tint_symbol_72;
     obj = x_864;
@@ -1289,7 +1286,7 @@
   color.x = x_867;
   const float x_287 = uv.y;
   const QuicksortObject x_868 = obj;
-  const tint_array_wrapper tint_symbol_73 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_73[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_74 = {tint_symbol_73};
   obj = tint_symbol_74;
   obj = x_868;
@@ -1301,9 +1298,9 @@
   color.y = 0.0f;
   color.y = x_870;
   const float3 x_494 = float3(x_191.x, x_191.y, x_191.y);
-  const int x_871 = obj.numbers.arr[4];
-  obj.numbers.arr[4] = 0;
-  obj.numbers.arr[4] = x_871;
+  const int x_871 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_871;
   if ((x_287 > 0.75f)) {
     const float3 x_872 = color;
     color = float3(0.0f, 0.0f, 0.0f);
@@ -1315,7 +1312,7 @@
     const float3 x_874 = color;
     color = float3(0.0f, 0.0f, 0.0f);
     color = x_874;
-    const int x_293 = obj.numbers.arr[7];
+    const int x_293 = obj.numbers[7];
     const float x_875 = uv.x;
     uv.x = 0.0f;
     uv.x = x_875;
@@ -1324,9 +1321,9 @@
     color.y = 0.0f;
     color.y = x_876;
     const float2 x_497 = float2(x_477.x, x_461.y);
-    const int x_877 = obj.numbers.arr[0u];
-    obj.numbers.arr[0u] = 0;
-    obj.numbers.arr[0u] = x_877;
+    const int x_877 = obj.numbers[0u];
+    obj.numbers[0u] = 0;
+    obj.numbers[0u] = x_877;
     const float x_878 = color.y;
     color.y = 0.0f;
     color.y = x_878;
@@ -1368,14 +1365,14 @@
   const float2 x_888 = uv;
   uv = float2(0.0f, 0.0f);
   uv = x_888;
-  const int x_301 = obj.numbers.arr[8];
+  const int x_301 = obj.numbers[8];
   const int x_889 = i_2;
   i_2 = 0;
   i_2 = x_889;
   const float2 x_503 = float2(x_185.x, x_451.z);
-  const int x_890 = obj.numbers.arr[8];
-  obj.numbers.arr[8] = 0;
-  obj.numbers.arr[8] = x_890;
+  const int x_890 = obj.numbers[8];
+  obj.numbers[8] = 0;
+  obj.numbers[8] = x_890;
   const float x_891 = color.y;
   color.y = 0.0f;
   color.y = x_891;
@@ -1392,9 +1389,9 @@
   color.x = 0.0f;
   color.x = x_894;
   const float2 x_506 = float2(x_493.x, x_492.x);
-  const int x_895 = obj.numbers.arr[4];
-  obj.numbers.arr[4] = 0;
-  obj.numbers.arr[4] = x_895;
+  const int x_895 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_895;
   const float x_896 = uv.y;
   uv.y = 0.0f;
   uv.y = x_896;
@@ -1443,23 +1440,23 @@
   uv.y = 0.0f;
   uv.y = x_908;
   const float3 x_512 = float3(x_455.y, x_455.y, x_455.y);
-  const int x_909 = obj.numbers.arr[4];
-  obj.numbers.arr[4] = 0;
-  obj.numbers.arr[4] = x_909;
+  const int x_909 = obj.numbers[4];
+  obj.numbers[4] = 0;
+  obj.numbers[4] = x_909;
   if ((abs((x_308 - x_310)) < 0.25f)) {
     const float x_910 = uv.x;
     uv.x = 0.0f;
     uv.x = x_910;
     const QuicksortObject x_911 = obj;
-    const tint_array_wrapper tint_symbol_75 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const int tint_symbol_75[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     const QuicksortObject tint_symbol_76 = {tint_symbol_75};
     obj = tint_symbol_76;
     obj = x_911;
     const float3 x_513 = float3(x_505.z, x_505.x, x_448.x);
-    const int x_912 = obj.numbers.arr[8];
-    obj.numbers.arr[8] = 0;
-    obj.numbers.arr[8] = x_912;
-    const int x_317 = obj.numbers.arr[9u];
+    const int x_912 = obj.numbers[8];
+    obj.numbers[8] = 0;
+    obj.numbers[8] = x_912;
+    const int x_317 = obj.numbers[9u];
     const float3 x_514 = float3(x_474.y, x_474.y, x_474.y);
     const float x_913 = uv.y;
     uv.y = 0.0f;
@@ -1505,12 +1502,12 @@
   uv.x = 0.0f;
   uv.x = x_923;
   const QuicksortObject x_924 = obj;
-  const tint_array_wrapper tint_symbol_77 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_77[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_78 = {tint_symbol_77};
   obj = tint_symbol_78;
   obj = x_924;
   const QuicksortObject x_925 = obj;
-  const tint_array_wrapper tint_symbol_79 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_79[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_80 = {tint_symbol_79};
   obj = tint_symbol_80;
   obj = x_925;
@@ -1531,7 +1528,7 @@
   uv.x = x_929;
   x_GLF_color = x_330;
   const QuicksortObject x_930 = obj;
-  const tint_array_wrapper tint_symbol_81 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const int tint_symbol_81[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
   const QuicksortObject tint_symbol_82 = {tint_symbol_81};
   obj = tint_symbol_82;
   obj = x_930;
diff --git a/test/bug/tint/782.wgsl.expected.hlsl b/test/bug/tint/782.wgsl.expected.hlsl
index 1066622..59bb8da 100644
--- a/test/bug/tint/782.wgsl.expected.hlsl
+++ b/test/bug/tint/782.wgsl.expected.hlsl
@@ -3,12 +3,8 @@
   return;
 }
 
-struct tint_array_wrapper {
-  int arr[2];
-};
-
 void foo() {
-  tint_array_wrapper tint_symbol = (tint_array_wrapper)0;
-  tint_array_wrapper implict = (tint_array_wrapper)0;
+  int tint_symbol[2] = (int[2])0;
+  int implict[2] = (int[2])0;
   implict = tint_symbol;
 }
diff --git a/test/bug/tint/824.wgsl.expected.hlsl b/test/bug/tint/824.wgsl.expected.hlsl
index 28fcb45..a1d0cab 100644
--- a/test/bug/tint/824.wgsl.expected.hlsl
+++ b/test/bug/tint/824.wgsl.expected.hlsl
@@ -10,22 +10,16 @@
   float4 color : TEXCOORD0;
   float4 Position : SV_Position;
 };
-struct tint_array_wrapper {
-  float2 arr[4];
-};
-struct tint_array_wrapper_1 {
-  float4 arr[4];
-};
 
 tint_symbol_2 main(tint_symbol_1 tint_symbol) {
   const uint VertexIndex = tint_symbol.VertexIndex;
   const uint InstanceIndex = tint_symbol.InstanceIndex;
-  tint_array_wrapper zv = {{float2(0.200000003f, 0.200000003f), float2(0.300000012f, 0.300000012f), float2(-0.100000001f, -0.100000001f), float2(1.100000024f, 1.100000024f)}};
-  const float z = zv.arr[InstanceIndex].x;
+  float2 zv[4] = {float2(0.200000003f, 0.200000003f), float2(0.300000012f, 0.300000012f), float2(-0.100000001f, -0.100000001f), float2(1.100000024f, 1.100000024f)};
+  const float z = zv[InstanceIndex].x;
   Output output = (Output)0;
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
-  tint_array_wrapper_1 colors = {{float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)}};
-  output.color = colors.arr[InstanceIndex];
+  float4 colors[4] = {float4(1.0f, 0.0f, 0.0f, 1.0f), float4(0.0f, 1.0f, 0.0f, 1.0f), float4(0.0f, 0.0f, 1.0f, 1.0f), float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  output.color = colors[InstanceIndex];
   const tint_symbol_2 tint_symbol_3 = {output.color, output.Position};
   return tint_symbol_3;
 }
diff --git a/test/bug/tint/870.spvasm.expected.hlsl b/test/bug/tint/870.spvasm.expected.hlsl
index 922ff09..db135e6 100644
--- a/test/bug/tint/870.spvasm.expected.hlsl
+++ b/test/bug/tint/870.spvasm.expected.hlsl
@@ -1,23 +1,20 @@
-struct tint_array_wrapper {
-  int arr[6];
-};
-
-tint_array_wrapper tint_symbol_1(ByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_2 = {{asint(buffer.Load((offset + 0u))), asint(buffer.Load((offset + 4u))), asint(buffer.Load((offset + 8u))), asint(buffer.Load((offset + 12u))), asint(buffer.Load((offset + 16u))), asint(buffer.Load((offset + 20u)))}};
+typedef int tint_symbol_1_ret[6];
+tint_symbol_1_ret tint_symbol_1(ByteAddressBuffer buffer, uint offset) {
+  const int tint_symbol_2[6] = {asint(buffer.Load((offset + 0u))), asint(buffer.Load((offset + 4u))), asint(buffer.Load((offset + 8u))), asint(buffer.Load((offset + 12u))), asint(buffer.Load((offset + 16u))), asint(buffer.Load((offset + 20u)))};
   return tint_symbol_2;
 }
 
 ByteAddressBuffer sspp962805860buildInformation : register(t2, space0);
 
 void main_1() {
-  tint_array_wrapper orientation = (tint_array_wrapper)0;
-  const tint_array_wrapper x_23 = tint_symbol_1(sspp962805860buildInformation, 36u);
-  orientation.arr[0] = x_23.arr[0u];
-  orientation.arr[1] = x_23.arr[1u];
-  orientation.arr[2] = x_23.arr[2u];
-  orientation.arr[3] = x_23.arr[3u];
-  orientation.arr[4] = x_23.arr[4u];
-  orientation.arr[5] = x_23.arr[5u];
+  int orientation[6] = (int[6])0;
+  const int x_23[6] = tint_symbol_1(sspp962805860buildInformation, 36u);
+  orientation[0] = x_23[0u];
+  orientation[1] = x_23[1u];
+  orientation[2] = x_23[2u];
+  orientation[3] = x_23[3u];
+  orientation[4] = x_23[4u];
+  orientation[5] = x_23[5u];
   return;
 }
 
diff --git a/test/bug/tint/914.wgsl.expected.hlsl b/test/bug/tint/914.wgsl.expected.hlsl
index 7aef00e..4030d77 100644
--- a/test/bug/tint/914.wgsl.expected.hlsl
+++ b/test/bug/tint/914.wgsl.expected.hlsl
@@ -54,28 +54,14 @@
 static const uint TileAOuter = 64u;
 static const uint TileBOuter = 64u;
 static const uint TileInner = 64u;
-
-struct tint_array_wrapper_1 {
-  float arr[64];
-};
-struct tint_array_wrapper {
-  tint_array_wrapper_1 arr[64];
-};
-
-groupshared tint_array_wrapper mm_Asub;
-groupshared tint_array_wrapper mm_Bsub;
+groupshared float mm_Asub[64][64];
+groupshared float mm_Bsub[64][64];
 
 struct tint_symbol_1 {
   uint3 local_id : SV_GroupThreadID;
   uint local_invocation_index : SV_GroupIndex;
   uint3 global_id : SV_DispatchThreadID;
 };
-struct tint_array_wrapper_2 {
-  float arr[16];
-};
-struct tint_array_wrapper_3 {
-  float arr[4];
-};
 
 [numthreads(16, 16, 1)]
 void main(tint_symbol_1 tint_symbol) {
@@ -83,9 +69,9 @@
   const uint3 global_id = tint_symbol.global_id;
   const uint local_invocation_index = tint_symbol.local_invocation_index;
   if ((local_invocation_index == 0u)) {
-    const tint_array_wrapper tint_symbol_5 = {(tint_array_wrapper_1[64])0};
+    const float tint_symbol_5[64][64] = (float[64][64])0;
     mm_Asub = tint_symbol_5;
-    const tint_array_wrapper tint_symbol_6 = {(tint_array_wrapper_1[64])0};
+    const float tint_symbol_6[64][64] = (float[64][64])0;
     mm_Bsub = tint_symbol_6;
   }
   GroupMemoryBarrierWithGroupSync();
@@ -95,13 +81,13 @@
   const uint globalCol = (global_id.x * ColPerThread);
   const uint scalar_offset_9 = (4u) / 4;
   const uint numTiles = (((uniforms[scalar_offset_9 / 4][scalar_offset_9 % 4] - 1u) / TileInner) + 1u);
-  tint_array_wrapper_2 acc = (tint_array_wrapper_2)0;
+  float acc[16] = (float[16])0;
   float ACached = 0.0f;
-  tint_array_wrapper_3 BCached = (tint_array_wrapper_3)0;
+  float BCached[4] = (float[4])0;
   {
     uint index = 0u;
     for(; !(!((index < (RowPerThread * ColPerThread)))); index = (index + 1u)) {
-      acc.arr[index] = 0.0f;
+      acc[index] = 0.0f;
     }
   }
   const uint ColPerThreadA = (TileInner / 16u);
@@ -119,7 +105,7 @@
             for(; !(!((innerCol < ColPerThreadA))); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRow + innerRow);
               const uint inputCol = (tileColA + innerCol);
-              mm_Asub.arr[inputRow].arr[inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
+              mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
             }
           }
         }
@@ -132,7 +118,7 @@
             for(; !(!((innerCol < ColPerThread))); innerCol = (innerCol + 1u)) {
               const uint inputRow = (tileRowB + innerRow);
               const uint inputCol = (tileCol + innerCol);
-              mm_Bsub.arr[innerCol].arr[inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
+              mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
             }
           }
         }
@@ -144,18 +130,18 @@
           {
             uint inner = 0u;
             for(; !(!((inner < ColPerThread))); inner = (inner + 1u)) {
-              BCached.arr[inner] = mm_Bsub.arr[k].arr[(tileCol + inner)];
+              BCached[inner] = mm_Bsub[k][(tileCol + inner)];
             }
           }
           {
             uint innerRow = 0u;
             for(; !(!((innerRow < RowPerThread))); innerRow = (innerRow + 1u)) {
-              ACached = mm_Asub.arr[(tileRow + innerRow)].arr[k];
+              ACached = mm_Asub[(tileRow + innerRow)][k];
               {
                 uint innerCol = 0u;
                 for(; !(!((innerCol < ColPerThread))); innerCol = (innerCol + 1u)) {
                   const uint index = ((innerRow * ColPerThread) + innerCol);
-                  acc.arr[index] = (acc.arr[index] + (ACached * BCached.arr[innerCol]));
+                  acc[index] = (acc[index] + (ACached * BCached[innerCol]));
                 }
               }
             }
@@ -172,7 +158,7 @@
         uint innerCol = 0u;
         for(; !(!((innerCol < ColPerThread))); innerCol = (innerCol + 1u)) {
           const uint index = ((innerRow * ColPerThread) + innerCol);
-          mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index]);
+          mm_write((globalRow + innerRow), (globalCol + innerCol), acc[index]);
         }
       }
     }
diff --git a/test/bug/tint/943.spvasm.expected.hlsl b/test/bug/tint/943.spvasm.expected.hlsl
index 0bf03e3..a2192d2 100644
--- a/test/bug/tint/943.spvasm.expected.hlsl
+++ b/test/bug/tint/943.spvasm.expected.hlsl
@@ -7,24 +7,8 @@
 RWByteAddressBuffer x_54 : register(u0, space0);
 static uint3 gl_LocalInvocationID = uint3(0u, 0u, 0u);
 static uint3 gl_GlobalInvocationID = uint3(0u, 0u, 0u);
-
-struct tint_array_wrapper_1 {
-  float arr[64];
-};
-struct tint_array_wrapper {
-  tint_array_wrapper_1 arr[64];
-};
-
-groupshared tint_array_wrapper mm_Asub;
-
-struct tint_array_wrapper_3 {
-  float arr[1];
-};
-struct tint_array_wrapper_2 {
-  tint_array_wrapper_3 arr[64];
-};
-
-groupshared tint_array_wrapper_2 mm_Bsub;
+groupshared float mm_Asub[64][64];
+groupshared float mm_Bsub[64][1];
 ByteAddressBuffer x_165 : register(t1, space0);
 static int batch = 0;
 ByteAddressBuffer x_185 : register(t2, space0);
@@ -161,10 +145,6 @@
   return;
 }
 
-struct tint_array_wrapper_4 {
-  tint_array_wrapper_3 arr[1];
-};
-
 void mm_matMul_i1_i1_i1_(inout int dimAOuter, inout int dimInner, inout int dimBOuter) {
   int tileRow = 0;
   int tileCol = 0;
@@ -173,7 +153,7 @@
   int numTiles = 0;
   int innerRow = 0;
   int innerCol = 0;
-  tint_array_wrapper_4 acc = (tint_array_wrapper_4)0;
+  float acc[1][1] = (float[1][1])0;
   int tileColA = 0;
   int tileRowB = 0;
   int t = 0;
@@ -191,7 +171,7 @@
   int param_6 = 0;
   int k = 0;
   int inner = 0;
-  tint_array_wrapper_3 BCached = (tint_array_wrapper_3)0;
+  float BCached[1] = (float[1])0;
   int innerRow_3 = 0;
   float ACached = 0.0f;
   int innerCol_3 = 0;
@@ -214,7 +194,7 @@
   for(; (innerRow < 1); innerRow = (innerRow + 1)) {
     innerCol = 0;
     for(; (innerCol < 1); innerCol = (innerCol + 1)) {
-      acc.arr[innerRow].arr[innerCol] = 0.0f;
+      acc[innerRow][innerCol] = 0.0f;
     }
   }
   const uint x_187 = gl_LocalInvocationID.x;
@@ -236,7 +216,7 @@
         param_3 = (globalRow + innerRow_1);
         param_4 = ((x_238 * 64) + x_240);
         const float x_244 = mm_readA_i1_i1_(param_3, param_4);
-        mm_Asub.arr[x_233].arr[x_234] = x_244;
+        mm_Asub[x_233][x_234] = x_244;
       }
     }
     innerRow_2 = 0;
@@ -252,7 +232,7 @@
         param_5 = ((t * 64) + inputRow_1);
         param_6 = (x_284 + x_285);
         const float x_289 = mm_readB_i1_i1_(param_5, param_6);
-        mm_Bsub.arr[x_278].arr[x_279] = x_289;
+        mm_Bsub[x_278][x_279] = x_289;
       }
     }
     GroupMemoryBarrierWithGroupSync();
@@ -261,21 +241,21 @@
       inner = 0;
       for(; (inner < 1); inner = (inner + 1)) {
         const int x_314 = inner;
-        const float x_320 = mm_Bsub.arr[k].arr[(tileCol + inner)];
-        BCached.arr[x_314] = x_320;
+        const float x_320 = mm_Bsub[k][(tileCol + inner)];
+        BCached[x_314] = x_320;
       }
       innerRow_3 = 0;
       for(; (innerRow_3 < 1); innerRow_3 = (innerRow_3 + 1)) {
-        const float x_338 = mm_Asub.arr[(tileRow + innerRow_3)].arr[k];
+        const float x_338 = mm_Asub[(tileRow + innerRow_3)][k];
         ACached = x_338;
         innerCol_3 = 0;
         for(; (innerCol_3 < 1); innerCol_3 = (innerCol_3 + 1)) {
           const int x_347 = innerRow_3;
           const int x_348 = innerCol_3;
           const float x_349 = ACached;
-          const float x_352 = BCached.arr[innerCol_3];
-          const float x_355 = acc.arr[x_347].arr[x_348];
-          acc.arr[x_347].arr[x_348] = (x_355 + (x_349 * x_352));
+          const float x_352 = BCached[innerCol_3];
+          const float x_355 = acc[x_347][x_348];
+          acc[x_347][x_348] = (x_355 + (x_349 * x_352));
         }
       }
     }
@@ -310,7 +290,7 @@
         const int x_404 = innerCol_4;
         param_7 = (globalRow + innerRow_4);
         param_8 = (x_400 + x_401);
-        const float x_409 = acc.arr[x_403].arr[x_404];
+        const float x_409 = acc[x_403][x_404];
         param_9 = x_409;
         mm_write_i1_i1_f1_(param_7, param_8, param_9);
       }
@@ -356,9 +336,9 @@
   const uint3 gl_GlobalInvocationID_param = tint_symbol.gl_GlobalInvocationID_param;
   const uint local_invocation_index = tint_symbol.local_invocation_index;
   if ((local_invocation_index == 0u)) {
-    const tint_array_wrapper tint_symbol_6 = {(tint_array_wrapper_1[64])0};
+    const float tint_symbol_6[64][64] = (float[64][64])0;
     mm_Asub = tint_symbol_6;
-    const tint_array_wrapper_2 tint_symbol_7 = {(tint_array_wrapper_3[64])0};
+    const float tint_symbol_7[64][1] = (float[64][1])0;
     mm_Bsub = tint_symbol_7;
   }
   GroupMemoryBarrierWithGroupSync();
diff --git a/test/expressions/zero_init/array/bool.wgsl.expected.hlsl b/test/expressions/zero_init/array/bool.wgsl.expected.hlsl
index bb059a1..7231ab6 100644
--- a/test/expressions/zero_init/array/bool.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/array/bool.wgsl.expected.hlsl
@@ -3,10 +3,6 @@
   return;
 }
 
-struct tint_array_wrapper {
-  bool arr[4];
-};
-
 void f() {
-  tint_array_wrapper v = {(bool[4])0};
+  bool v[4] = (bool[4])0;
 }
diff --git a/test/expressions/zero_init/array/f32.wgsl.expected.hlsl b/test/expressions/zero_init/array/f32.wgsl.expected.hlsl
index 6e095b3..fdd7f6f 100644
--- a/test/expressions/zero_init/array/f32.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/array/f32.wgsl.expected.hlsl
@@ -3,10 +3,6 @@
   return;
 }
 
-struct tint_array_wrapper {
-  float arr[4];
-};
-
 void f() {
-  tint_array_wrapper v = {(float[4])0};
+  float v[4] = (float[4])0;
 }
diff --git a/test/expressions/zero_init/array/i32.wgsl.expected.hlsl b/test/expressions/zero_init/array/i32.wgsl.expected.hlsl
index 8ba61ef..0b0cdfc 100644
--- a/test/expressions/zero_init/array/i32.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/array/i32.wgsl.expected.hlsl
@@ -3,10 +3,6 @@
   return;
 }
 
-struct tint_array_wrapper {
-  int arr[4];
-};
-
 void f() {
-  tint_array_wrapper v = {(int[4])0};
+  int v[4] = (int[4])0;
 }
diff --git a/test/expressions/zero_init/array/struct.wgsl.expected.hlsl b/test/expressions/zero_init/array/struct.wgsl.expected.hlsl
index 8d7f4e4..f8250ba 100644
--- a/test/expressions/zero_init/array/struct.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/array/struct.wgsl.expected.hlsl
@@ -9,10 +9,7 @@
   float f;
   bool b;
 };
-struct tint_array_wrapper {
-  S arr[4];
-};
 
 void f() {
-  tint_array_wrapper v = {(S[4])0};
+  S v[4] = (S[4])0;
 }
diff --git a/test/expressions/zero_init/array/u32.wgsl.expected.hlsl b/test/expressions/zero_init/array/u32.wgsl.expected.hlsl
index b3253f8..acb74fc 100644
--- a/test/expressions/zero_init/array/u32.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/array/u32.wgsl.expected.hlsl
@@ -3,10 +3,6 @@
   return;
 }
 
-struct tint_array_wrapper {
-  uint arr[4];
-};
-
 void f() {
-  tint_array_wrapper v = {(uint[4])0};
+  uint v[4] = (uint[4])0;
 }
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.hlsl b/test/expressions/zero_init/struct/array.wgsl.expected.hlsl
index c514b14..6b9d582 100644
--- a/test/expressions/zero_init/struct/array.wgsl.expected.hlsl
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.hlsl
@@ -3,11 +3,8 @@
   return;
 }
 
-struct tint_array_wrapper {
-  float arr[4];
-};
 struct S {
-  tint_array_wrapper a;
+  float a[4];
 };
 
 void f() {
diff --git a/test/samples/triangle.wgsl.expected.hlsl b/test/samples/triangle.wgsl.expected.hlsl
index 29fc958..21724d6 100644
--- a/test/samples/triangle.wgsl.expected.hlsl
+++ b/test/samples/triangle.wgsl.expected.hlsl
@@ -4,14 +4,11 @@
 struct tint_symbol_2 {
   float4 value : SV_Position;
 };
-struct tint_array_wrapper {
-  float2 arr[3];
-};
 
 tint_symbol_2 vtx_main(tint_symbol_1 tint_symbol) {
   const uint VertexIndex = tint_symbol.VertexIndex;
-  tint_array_wrapper pos = {{float2(0.0f, 0.5f), float2(-0.5f, -0.5f), float2(0.5f, -0.5f)}};
-  const tint_symbol_2 tint_symbol_4 = {float4(pos.arr[VertexIndex], 0.0f, 1.0f)};
+  float2 pos[3] = {float2(0.0f, 0.5f), float2(-0.5f, -0.5f), float2(0.5f, -0.5f)};
+  const tint_symbol_2 tint_symbol_4 = {float4(pos[VertexIndex], 0.0f, 1.0f)};
   return tint_symbol_4;
 }
 
diff --git a/test/struct/type_constructor.wgsl.expected.hlsl b/test/struct/type_constructor.wgsl.expected.hlsl
index dc1dd7a..f6285aa 100644
--- a/test/struct/type_constructor.wgsl.expected.hlsl
+++ b/test/struct/type_constructor.wgsl.expected.hlsl
@@ -13,14 +13,8 @@
   S1 h;
   S2 i;
 };
-struct tint_array_wrapper {
-  int arr[2];
-};
 struct T {
-  tint_array_wrapper a;
-};
-struct tint_array_wrapper_1 {
-  T arr[2];
+  int a[2];
 };
 
 [numthreads(1, 1, 1)]
@@ -51,14 +45,14 @@
   const S1 tint_symbol_11 = {2, x, (x + 1), nested_nonempty.i.f.d};
   const S2 tint_symbol_12 = {1, tint_symbol_11};
   const S1 subexpr_nested_nonempty_with_expr = tint_symbol_12.f;
-  const tint_array_wrapper_1 aosoa_empty = {(T[2])0};
-  const tint_array_wrapper tint_symbol_13 = {{1, 2}};
+  const T aosoa_empty[2] = (T[2])0;
+  const int tint_symbol_13[2] = {1, 2};
   const T tint_symbol_14 = {tint_symbol_13};
-  const tint_array_wrapper tint_symbol_15 = {{3, 4}};
+  const int tint_symbol_15[2] = {3, 4};
   const T tint_symbol_16 = {tint_symbol_15};
-  const tint_array_wrapper_1 aosoa_nonempty = {{tint_symbol_14, tint_symbol_16}};
-  const tint_array_wrapper tint_symbol_17 = {{1, (aosoa_nonempty.arr[0].a.arr[0] + 1)}};
+  const T aosoa_nonempty[2] = {tint_symbol_14, tint_symbol_16};
+  const int tint_symbol_17[2] = {1, (aosoa_nonempty[0].a[0] + 1)};
   const T tint_symbol_18 = {tint_symbol_17};
-  const tint_array_wrapper_1 aosoa_nonempty_with_expr = {{tint_symbol_18, aosoa_nonempty.arr[1]}};
+  const T aosoa_nonempty_with_expr[2] = {tint_symbol_18, aosoa_nonempty[1]};
   return;
 }
diff --git a/test/types/function_scope_declarations.wgsl.expected.hlsl b/test/types/function_scope_declarations.wgsl.expected.hlsl
index aae4fe9..c120722 100644
--- a/test/types/function_scope_declarations.wgsl.expected.hlsl
+++ b/test/types/function_scope_declarations.wgsl.expected.hlsl
@@ -1,9 +1,6 @@
 struct S {
   float a;
 };
-struct tint_array_wrapper {
-  float arr[4];
-};
 
 [numthreads(1, 1, 1)]
 void main() {
@@ -23,8 +20,8 @@
   const float4 v4f32_let = float4(0.0f, 0.0f, 0.0f, 0.0f);
   float2x3 m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   const float3x4 m3x4_let = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  tint_array_wrapper arr_var = {(float[4])0};
-  const tint_array_wrapper arr_let = {(float[4])0};
+  float arr_var[4] = (float[4])0;
+  const float arr_let[4] = (float[4])0;
   S struct_var = (S)0;
   const S struct_let = (S)0;
   return;
diff --git a/test/types/module_scope_let.wgsl.expected.hlsl b/test/types/module_scope_let.wgsl.expected.hlsl
index db17206..d62a81d 100644
--- a/test/types/module_scope_let.wgsl.expected.hlsl
+++ b/test/types/module_scope_let.wgsl.expected.hlsl
@@ -10,12 +10,7 @@
 static const uint3 v3u32_let = uint3(0u, 0u, 0u);
 static const float4 v4f32_let = float4(0.0f, 0.0f, 0.0f, 0.0f);
 static const float3x4 m3x4_let = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-static const tint_array_wrapper arr_let = {(float[4])0};
+static const float arr_let[4] = (float[4])0;
 static const S struct_let = (S)0;
 
 [numthreads(1, 1, 1)]
diff --git a/test/types/module_scope_var.wgsl.expected.hlsl b/test/types/module_scope_var.wgsl.expected.hlsl
index 1fc2b00..fefdd19 100644
--- a/test/types/module_scope_var.wgsl.expected.hlsl
+++ b/test/types/module_scope_var.wgsl.expected.hlsl
@@ -10,12 +10,7 @@
 static uint3 v3u32_var = uint3(0u, 0u, 0u);
 static float4 v4f32_var = float4(0.0f, 0.0f, 0.0f, 0.0f);
 static float2x3 m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-static tint_array_wrapper arr_var = (tint_array_wrapper)0;
+static float arr_var[4] = (float[4])0;
 static S struct_var = (S)0;
 
 [numthreads(1, 1, 1)]
@@ -28,7 +23,7 @@
   v3u32_var = uint3(0u, 0u, 0u);
   v4f32_var = float4(0.0f, 0.0f, 0.0f, 0.0f);
   m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  const tint_array_wrapper tint_symbol = {(float[4])0};
+  const float tint_symbol[4] = (float[4])0;
   arr_var = tint_symbol;
   const S tint_symbol_1 = (S)0;
   struct_var = tint_symbol_1;
diff --git a/test/types/module_scope_var_initializers.wgsl.expected.hlsl b/test/types/module_scope_var_initializers.wgsl.expected.hlsl
index 337afc2..fefdd19 100644
--- a/test/types/module_scope_var_initializers.wgsl.expected.hlsl
+++ b/test/types/module_scope_var_initializers.wgsl.expected.hlsl
@@ -10,12 +10,7 @@
 static uint3 v3u32_var = uint3(0u, 0u, 0u);
 static float4 v4f32_var = float4(0.0f, 0.0f, 0.0f, 0.0f);
 static float2x3 m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-static tint_array_wrapper arr_var = {(float[4])0};
+static float arr_var[4] = (float[4])0;
 static S struct_var = (S)0;
 
 [numthreads(1, 1, 1)]
@@ -28,7 +23,7 @@
   v3u32_var = uint3(0u, 0u, 0u);
   v4f32_var = float4(0.0f, 0.0f, 0.0f, 0.0f);
   m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  const tint_array_wrapper tint_symbol = {(float[4])0};
+  const float tint_symbol[4] = (float[4])0;
   arr_var = tint_symbol;
   const S tint_symbol_1 = (S)0;
   struct_var = tint_symbol_1;
diff --git a/test/types/parameters.wgsl.expected.hlsl b/test/types/parameters.wgsl.expected.hlsl
index 2950517..10704a7 100644
--- a/test/types/parameters.wgsl.expected.hlsl
+++ b/test/types/parameters.wgsl.expected.hlsl
@@ -1,11 +1,8 @@
 struct S {
   float a;
 };
-struct tint_array_wrapper {
-  float arr[4];
-};
 
-void foo(bool param_bool, int param_i32, uint param_u32, float param_f32, int2 param_v2i32, uint3 param_v3u32, float4 param_v4f32, float2x3 param_m2x3, tint_array_wrapper param_arr, S param_struct, inout float param_ptr_f32, inout float4 param_ptr_vec, inout tint_array_wrapper param_ptr_arr) {
+void foo(bool param_bool, int param_i32, uint param_u32, float param_f32, int2 param_v2i32, uint3 param_v3u32, float4 param_v4f32, float2x3 param_m2x3, float param_arr[4], S param_struct, inout float param_ptr_f32, inout float4 param_ptr_vec, inout float param_ptr_arr[4]) {
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/types/return_types.wgsl.expected.hlsl b/test/types/return_types.wgsl.expected.hlsl
index 453c90d..1d057d4 100644
--- a/test/types/return_types.wgsl.expected.hlsl
+++ b/test/types/return_types.wgsl.expected.hlsl
@@ -34,12 +34,9 @@
   return float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
 }
 
-struct tint_array_wrapper {
-  float arr[4];
-};
-
-tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol = {(float[4])0};
+typedef float ret_arr_ret[4];
+ret_arr_ret ret_arr() {
+  const float tint_symbol[4] = (float[4])0;
   return tint_symbol;
 }
 
diff --git a/test/types/struct_members.wgsl.expected.hlsl b/test/types/struct_members.wgsl.expected.hlsl
index b3ec0b1..671d9af 100644
--- a/test/types/struct_members.wgsl.expected.hlsl
+++ b/test/types/struct_members.wgsl.expected.hlsl
@@ -1,9 +1,6 @@
 struct S_inner {
   float a;
 };
-struct tint_array_wrapper {
-  float arr[4];
-};
 struct S {
   bool member_bool;
   int member_i32;
@@ -13,7 +10,7 @@
   uint3 member_v3u32;
   float4 member_v4f32;
   float2x3 member_m2x3;
-  tint_array_wrapper member_arr;
+  float member_arr[4];
   S_inner member_struct;
 };
 
diff --git a/test/var/inferred/function-let.wgsl.expected.hlsl b/test/var/inferred/function-let.wgsl.expected.hlsl
index f43f9b9..98f4667 100644
--- a/test/var/inferred/function-let.wgsl.expected.hlsl
+++ b/test/var/inferred/function-let.wgsl.expected.hlsl
@@ -1,9 +1,6 @@
 struct MyStruct {
   float f1;
 };
-struct tint_array_wrapper {
-  float arr[10];
-};
 
 int ret_i32() {
   return 1;
@@ -22,8 +19,9 @@
   return tint_symbol_1;
 }
 
-tint_array_wrapper ret_MyArray() {
-  const tint_array_wrapper tint_symbol_2 = {(float[10])0};
+typedef float ret_MyArray_ret[10];
+ret_MyArray_ret ret_MyArray() {
+  const float tint_symbol_2[10] = (float[10])0;
   return tint_symbol_2;
 }
 
@@ -36,13 +34,13 @@
   const float3 v6 = float3(1.0f, 1.0f, 1.0f);
   const float3x3 v7 = float3x3(v6, v6, v6);
   const MyStruct v8 = {1.0f};
-  const tint_array_wrapper v9 = {(float[10])0};
+  const float v9[10] = (float[10])0;
   const int v10 = ret_i32();
   const uint v11 = ret_u32();
   const float v12 = ret_f32();
   const MyStruct v13 = ret_MyStruct();
   const MyStruct v14 = ret_MyStruct();
-  const tint_array_wrapper v15 = ret_MyArray();
+  const float v15[10] = ret_MyArray();
 }
 
 struct tint_symbol {
diff --git a/test/var/inferred/function-var.wgsl.expected.hlsl b/test/var/inferred/function-var.wgsl.expected.hlsl
index 6619cd7..f91c6ec 100644
--- a/test/var/inferred/function-var.wgsl.expected.hlsl
+++ b/test/var/inferred/function-var.wgsl.expected.hlsl
@@ -1,9 +1,6 @@
 struct MyStruct {
   float f1;
 };
-struct tint_array_wrapper {
-  float arr[10];
-};
 
 int ret_i32() {
   return 1;
@@ -22,8 +19,9 @@
   return tint_symbol_1;
 }
 
-tint_array_wrapper ret_MyArray() {
-  const tint_array_wrapper tint_symbol_2 = {(float[10])0};
+typedef float ret_MyArray_ret[10];
+ret_MyArray_ret ret_MyArray() {
+  const float tint_symbol_2[10] = (float[10])0;
   return tint_symbol_2;
 }
 
@@ -36,13 +34,13 @@
   float3 v6 = float3(1.0f, 1.0f, 1.0f);
   float3x3 v7 = float3x3(v6, v6, v6);
   MyStruct v8 = {1.0f};
-  tint_array_wrapper v9 = {(float[10])0};
+  float v9[10] = (float[10])0;
   int v10 = ret_i32();
   uint v11 = ret_u32();
   float v12 = ret_f32();
   MyStruct v13 = ret_MyStruct();
   MyStruct v14 = ret_MyStruct();
-  tint_array_wrapper v15 = ret_MyArray();
+  float v15[10] = ret_MyArray();
 }
 
 struct tint_symbol {
diff --git a/test/var/inferred/global-let.wgsl.expected.hlsl b/test/var/inferred/global-let.wgsl.expected.hlsl
index 70b351b..4784df7 100644
--- a/test/var/inferred/global-let.wgsl.expected.hlsl
+++ b/test/var/inferred/global-let.wgsl.expected.hlsl
@@ -1,9 +1,6 @@
 struct MyStruct {
   float f1;
 };
-struct tint_array_wrapper {
-  float arr[10];
-};
 
 static const int v1 = 1;
 static const uint v2 = 1u;
@@ -13,7 +10,7 @@
 static const float3 v6 = float3(1.0f, 1.0f, 1.0f);
 static const float3x3 v7 = float3x3(float3(1.0f, 1.0f, 1.0f), float3(1.0f, 1.0f, 1.0f), float3(1.0f, 1.0f, 1.0f));
 static const MyStruct v8 = (MyStruct)0;
-static const tint_array_wrapper v9 = {(float[10])0};
+static const float v9[10] = (float[10])0;
 
 struct tint_symbol {
   float4 value : SV_Target0;
diff --git a/test/var/initialization/function/array.wgsl.expected.hlsl b/test/var/initialization/function/array.wgsl.expected.hlsl
index db08453..921ae91 100644
--- a/test/var/initialization/function/array.wgsl.expected.hlsl
+++ b/test/var/initialization/function/array.wgsl.expected.hlsl
@@ -1,10 +1,6 @@
-struct tint_array_wrapper {
-  int arr[3];
-};
-
 [numthreads(1, 1, 1)]
 void main() {
-  tint_array_wrapper v = (tint_array_wrapper)0;
+  int v[3] = (int[3])0;
   v;
   return;
 }
diff --git a/test/var/initialization/private/array.wgsl.expected.hlsl b/test/var/initialization/private/array.wgsl.expected.hlsl
index 4957baf..48b2b5b 100644
--- a/test/var/initialization/private/array.wgsl.expected.hlsl
+++ b/test/var/initialization/private/array.wgsl.expected.hlsl
@@ -1,8 +1,4 @@
-struct tint_array_wrapper {
-  int arr[3];
-};
-
-static tint_array_wrapper v = (tint_array_wrapper)0;
+static int v[3] = (int[3])0;
 
 [numthreads(1, 1, 1)]
 void main() {
diff --git a/test/var/initialization/workgroup/array.wgsl.expected.hlsl b/test/var/initialization/workgroup/array.wgsl.expected.hlsl
index 768b850..625ed65 100644
--- a/test/var/initialization/workgroup/array.wgsl.expected.hlsl
+++ b/test/var/initialization/workgroup/array.wgsl.expected.hlsl
@@ -1,8 +1,4 @@
-struct tint_array_wrapper {
-  int arr[3];
-};
-
-groupshared tint_array_wrapper v;
+groupshared int v[3];
 
 struct tint_symbol_1 {
   uint local_invocation_index : SV_GroupIndex;
@@ -12,7 +8,7 @@
 void main(tint_symbol_1 tint_symbol) {
   const uint local_invocation_index = tint_symbol.local_invocation_index;
   if ((local_invocation_index == 0u)) {
-    const tint_array_wrapper tint_symbol_2 = {(int[3])0};
+    const int tint_symbol_2[3] = (int[3])0;
     v = tint_symbol_2;
   }
   GroupMemoryBarrierWithGroupSync();