[msl] Emit struct name before constructors

This fixes cases where a struct constructor is used as a temporary
followed immediately by an access instruction.

See struct/type_initializer.wgsl as an example test that now passes.

Bug: 42251016
Change-Id: Ic2105ed146e4c81505ac945195956e406a1ed7ef
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/188623
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
diff --git a/src/tint/lang/msl/writer/printer/discard_test.cc b/src/tint/lang/msl/writer/printer/discard_test.cc
index 954118a..79a7131 100644
--- a/src/tint/lang/msl/writer/printer/discard_test.cc
+++ b/src/tint/lang/msl/writer/printer/discard_test.cc
@@ -61,7 +61,7 @@
 }
 fragment void frag_main() {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.continue_execution=(&continue_execution)};
   foo(tint_module_vars);
   if (!((*tint_module_vars.continue_execution))) {
     discard_fragment();
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index bfc968e..7c58cd4 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -1002,6 +1002,8 @@
                 out << "}";
             },
             [&](const core::type::Struct* struct_ty) {
+                EmitStructType(struct_ty);
+                out << struct_ty->Name().Name();
                 out << "{";
                 size_t i = 0;
                 for (auto* arg : c->Args()) {
diff --git a/src/tint/lang/msl/writer/printer/var_test.cc b/src/tint/lang/msl/writer/printer/var_test.cc
index 2cc2671..b3e141a 100644
--- a/src/tint/lang/msl/writer/printer/var_test.cc
+++ b/src/tint/lang/msl/writer/printer/var_test.cc
@@ -276,7 +276,7 @@
 }
 fragment void frag() {
   thread float v = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
   foo(tint_module_vars);
 }
 )");
diff --git a/test/tint/access/let/matrix.wgsl.expected.ir.msl b/test/tint/access/let/matrix.wgsl.expected.ir.msl
index 78f095c..7ddf204 100644
--- a/test/tint/access/let/matrix.wgsl.expected.ir.msl
+++ b/test/tint/access/let/matrix.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void tint_symbol(device float* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   float3x3 const m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3 const v = m[1];
   float const f = v[1];
diff --git a/test/tint/access/let/vector.wgsl.expected.ir.msl b/test/tint/access/let/vector.wgsl.expected.ir.msl
index f989433..d9bdeee 100644
--- a/test/tint/access/let/vector.wgsl.expected.ir.msl
+++ b/test/tint/access/let/vector.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void tint_symbol(device float3* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   float3 const v = float3(1.0f, 2.0f, 3.0f);
   float const scalar = v[1u];
   float2 const swizzle2 = v.xz;
diff --git a/test/tint/access/var/matrix.wgsl.expected.ir.msl b/test/tint/access/var/matrix.wgsl.expected.ir.msl
index 523b128..0110f25 100644
--- a/test/tint/access/var/matrix.wgsl.expected.ir.msl
+++ b/test/tint/access/var/matrix.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void tint_symbol(device float* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   float3x3 m = float3x3(0.0f);
   float3 const v = m[1];
   float const f = v[1];
diff --git a/test/tint/access/var/vector.wgsl.expected.ir.msl b/test/tint/access/var/vector.wgsl.expected.ir.msl
index 810771b..048db9f 100644
--- a/test/tint/access/var/vector.wgsl.expected.ir.msl
+++ b/test/tint/access/var/vector.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void tint_symbol(device float3* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   float3 v = 0.0f;
   float const scalar = v[1u];
   float2 const swizzle2 = v.xz;
diff --git a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
index ca8e408..471068b 100644
--- a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
@@ -35,6 +35,6 @@
   return (((*dst_ptr)[0] + (*dst_struct_ptr).arr[0]) + (*dst_array_ptr)[0][0]);
 }
 kernel void tint_symbol(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   (*tint_module_vars.s) = foo();
 }
diff --git a/test/tint/array/function_parameter.wgsl.expected.ir.msl b/test/tint/array/function_parameter.wgsl.expected.ir.msl
index a150de7..fbab9f4 100644
--- a/test/tint/array/function_parameter.wgsl.expected.ir.msl
+++ b/test/tint/array/function_parameter.wgsl.expected.ir.msl
@@ -26,7 +26,7 @@
   return a[1][2][3];
 }
 kernel void tint_symbol(device float* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   tint_array<float, 4> const a1 = tint_array<float, 4>{};
   tint_array<tint_array<float, 4>, 3> const a2 = tint_array<tint_array<float, 4>, 3>{};
   tint_array<tint_array<tint_array<float, 4>, 3>, 2> const a3 = tint_array<tint_array<tint_array<float, 4>, 3>, 2>{};
diff --git a/test/tint/array/function_return_type.wgsl.expected.ir.msl b/test/tint/array/function_return_type.wgsl.expected.ir.msl
index 16f9e96..9e92db5 100644
--- a/test/tint/array/function_return_type.wgsl.expected.ir.msl
+++ b/test/tint/array/function_return_type.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
   return tint_array<tint_array<tint_array<float, 4>, 3>, 2>{v_2, f2()};
 }
 kernel void tint_symbol(device float* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   tint_array<float, 4> const a1 = f1();
   tint_array<tint_array<float, 4>, 3> const a2 = f2();
   tint_array<tint_array<tint_array<float, 4>, 3>, 2> const a3 = f3();
diff --git a/test/tint/array/size.wgsl.expected.ir.msl b/test/tint/array/size.wgsl.expected.ir.msl
index 3474538..7d0296e 100644
--- a/test/tint/array/size.wgsl.expected.ir.msl
+++ b/test/tint/array/size.wgsl.expected.ir.msl
@@ -17,7 +17,7 @@
 
 
 fragment void tint_symbol(device float* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   tint_array<float, 4> signed_literal = {};
   tint_array<float, 4> unsigned_literal = {};
   tint_array<float, 4> signed_constant = {};
diff --git a/test/tint/array/type_initializer.wgsl.expected.ir.msl b/test/tint/array/type_initializer.wgsl.expected.ir.msl
index a590be4..7c0c9cc 100644
--- a/test/tint/array/type_initializer.wgsl.expected.ir.msl
+++ b/test/tint/array/type_initializer.wgsl.expected.ir.msl
@@ -17,7 +17,7 @@
 
 
 kernel void tint_symbol(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int const x = 42;
   tint_array<int, 4> const empty = tint_array<int, 4>{};
   tint_array<int, 4> const nonempty = tint_array<int, 4>{1, 2, 3, 4};
diff --git a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
index 6ba9099..d34f267 100644
--- a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
@@ -18,6 +18,6 @@
 };
 
 kernel void tint_symbol(const device tint_array<half, 4>* in [[buffer(0)]], device tint_array<half, 4>* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
index 707a37b..e776fb1 100644
--- a/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
@@ -18,6 +18,6 @@
 };
 
 kernel void tint_symbol(const device tint_array<float, 4>* in [[buffer(0)]], device tint_array<float, 4>* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
index 7b4b10b..117bb6d 100644
--- a/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half* in [[buffer(0)]], device half* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
index 47b2078..da38f6f 100644
--- a/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float* in [[buffer(0)]], device float* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
index edc0ef0..e2e30f9 100644
--- a/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device int* in [[buffer(0)]], device int* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
index 824b701..a9d9baa 100644
--- a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half2x2* in [[buffer(0)]], device half2x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
index e0724a7..958d79b 100644
--- a/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float2x2* in [[buffer(0)]], device float2x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
index 412ece7..507ddead 100644
--- a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -10,6 +10,6 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void tint_symbol(const device half2x3* in [[buffer(0)]], device half2x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
index 456f0fd..30a2504 100644
--- a/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -10,6 +10,6 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void tint_symbol(const device float2x3* in [[buffer(0)]], device float2x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
index 6a84e3e..a40d290 100644
--- a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half2x4* in [[buffer(0)]], device half2x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
index 34f93d0..363a695 100644
--- a/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float2x4* in [[buffer(0)]], device float2x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
index 19c106b..d3c7461 100644
--- a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half3x2* in [[buffer(0)]], device half3x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
index 85f9043..a1056c8 100644
--- a/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float3x2* in [[buffer(0)]], device float3x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
index 98f4a8f..051fd71 100644
--- a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void tint_symbol(const device half3x3* in [[buffer(0)]], device half3x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
index b3e18bc..fa16f45 100644
--- a/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void tint_symbol(const device float3x3* in [[buffer(0)]], device float3x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
index 0a096bd..95e7825 100644
--- a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half3x4* in [[buffer(0)]], device half3x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
index 05d12e3..eef01c3 100644
--- a/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float3x4* in [[buffer(0)]], device float3x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
index dbefc25..b040ef5 100644
--- a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half4x2* in [[buffer(0)]], device half4x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
index b756c9e..357aacc 100644
--- a/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float4x2* in [[buffer(0)]], device float4x2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
index 231d79a..c222f1a 100644
--- a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void tint_symbol(const device half4x3* in [[buffer(0)]], device half4x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
index b048da1..d4ae9f6 100644
--- a/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void tint_symbol(const device float4x3* in [[buffer(0)]], device float4x3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
diff --git a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
index c513d85..9b45119 100644
--- a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half4x4* in [[buffer(0)]], device half4x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
index c916802..c9d56f8 100644
--- a/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float4x4* in [[buffer(0)]], device float4x4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl
index 1e62fb1..257fdd50 100644
--- a/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/runtime_array_f16.wgsl.expected.ir.msl
@@ -18,6 +18,6 @@
 };
 
 kernel void tint_symbol(const device tint_array<half, 1>* in [[buffer(0)]], device tint_array<half, 1>* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out)[0] = (*tint_module_vars.in)[0];
 }
diff --git a/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl
index 854ef60..5c9d579 100644
--- a/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/runtime_array_f32.wgsl.expected.ir.msl
@@ -18,6 +18,6 @@
 };
 
 kernel void tint_symbol(const device tint_array<float, 1>* in [[buffer(0)]], device tint_array<float, 1>* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out)[0] = (*tint_module_vars.in)[0];
 }
diff --git a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
index c164eb7..2f4997f 100644
--- a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
@@ -22,7 +22,7 @@
   tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
 kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   S const t = (*tint_module_vars.in);
   tint_store_and_preserve_padding(tint_module_vars.out, t);
 }
diff --git a/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
index 63beebd..6ede2a0 100644
--- a/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
@@ -22,7 +22,7 @@
   tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
 kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   S const t = (*tint_module_vars.in);
   tint_store_and_preserve_padding(tint_module_vars.out, t);
 }
diff --git a/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
index 722f79b..4fcd1da 100644
--- a/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device uint* in [[buffer(0)]], device uint* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
index 7cd3047..29ecf51 100644
--- a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half2* in [[buffer(0)]], device half2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
index 9dc1b65..59707c4 100644
--- a/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float2* in [[buffer(0)]], device float2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
index d9ac05a2..edca838 100644
--- a/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device int2* in [[buffer(0)]], device int2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
index da42370..8c4d30b 100644
--- a/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device uint2* in [[buffer(0)]], device uint2* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
index b701bb1..cf9c899 100644
--- a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half3* in [[buffer(0)]], device half3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
index a4c8d83..8c72ff0 100644
--- a/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float3* in [[buffer(0)]], device float3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
index ecd09c8..fd8a03f 100644
--- a/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device int3* in [[buffer(0)]], device int3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
index ed24883..c364121 100644
--- a/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device uint3* in [[buffer(0)]], device uint3* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
index 819de0d..eae15ee 100644
--- a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device half4* in [[buffer(0)]], device half4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
index b5010a2..c746527 100644
--- a/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device float4* in [[buffer(0)]], device float4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
index ad78b22..180f906 100644
--- a/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device int4* in [[buffer(0)]], device int4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
index e2459ca..737319d 100644
--- a/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 };
 
 kernel void tint_symbol(const device uint4* in [[buffer(0)]], device uint4* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 79e7291..dddf7d6 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float2x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float2x2, 4>* const p_a = tint_module_vars.a;
   const constant float2x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
index c5b8b2b..29f903c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float2x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float2x2, 4>* const p_a = tint_module_vars.a;
   const constant float2x2* const p_a_2 = (&(*p_a)[2]);
   const constant float2* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl
index 67e2c70..f3d8646 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl
index 8bfe23f..6720128 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float2x2, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl
index 72effba..978a81d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x2_f32/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device tint_array<float2x2, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index aa5a4f7..6cb854c 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<half2x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<half2x3, 4>* const p_a = tint_module_vars.a;
   const constant half2x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant half3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 8910f77..293863e 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half2x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<half2x3, 4>* const p_a = tint_module_vars.a;
   const constant half2x3* const p_a_2 = (&(*p_a)[2]);
   const constant half3* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl
index a52a437..cf80f4b 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<half2x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const v_1 = a((*tint_module_vars.u));
   half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl
index acf14e0..796aa49 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<half2x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread tint_array<half2x3, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 5b3331d..4ecc4f1 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float2x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float2x3, 4>* const p_a = tint_module_vars.a;
   const constant float2x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 9dbb093..d45380d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float2x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float2x3, 4>* const p_a = tint_module_vars.a;
   const constant float2x3* const p_a_2 = (&(*p_a)[2]);
   const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl
index 8348081..0705e33 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float2x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
diff --git a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl
index 8b4a1a1..8b65d3b 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float2x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float2x3, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index d7eb131..58f1097 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<half2x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<half2x4, 4>* const p_a = tint_module_vars.a;
   const constant half2x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant half4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 605e189..89f3f7a 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half2x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<half2x4, 4>* const p_a = tint_module_vars.a;
   const constant half2x4* const p_a_2 = (&(*p_a)[2]);
   const constant half4* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl
index 226eeed..9986a03 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const v_1 = a((*tint_module_vars.u));
   half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl
index e4d093e..f391c4d 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread tint_array<half2x4, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl
index 9be526c..b6badfa 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f16/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device tint_array<half2x4, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 7fce1c5..2ade1bd 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float2x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float2x4, 4>* const p_a = tint_module_vars.a;
   const constant float2x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 3b6e56a..caf0012 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float2x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float2x4, 4>* const p_a = tint_module_vars.a;
   const constant float2x4* const p_a_2 = (&(*p_a)[2]);
   const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl
index a904ad7..eb61597 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl
index ee51d8f..34dc2b6 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float2x4, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl
index 2f1ed75..fb126a0 100644
--- a/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat2x4_f32/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device tint_array<float2x4, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 69f3b35..4604d39 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float3x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float3x3, 4>* const p_a = tint_module_vars.a;
   const constant float3x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index adace3c..e167906 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float3x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float3x3, 4>* const p_a = tint_module_vars.a;
   const constant float3x3* const p_a_2 = (&(*p_a)[2]);
   const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl
index 059c91c..0ef3585 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float3x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
diff --git a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl
index f4dc4b4..f859df2 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float3x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float3x3, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index a211c1f..394e9a2 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float3x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float3x4, 4>* const p_a = tint_module_vars.a;
   const constant float3x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index f6dba61..7ff4389 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float3x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float3x4, 4>* const p_a = tint_module_vars.a;
   const constant float3x4* const p_a_2 = (&(*p_a)[2]);
   const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl
index 3d5f5fa..151e871 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl
index eb86d59..f29156c 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float3x4, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl
index 8e92b5b..3ec9596 100644
--- a/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat3x4_f32/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device tint_array<float3x4, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index c4eb513..f13dd6e 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<half4x2, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<half4x2, 4>* const p_a = tint_module_vars.a;
   const constant half4x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant half2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 37afaef..0b34f05 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half4x2, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<half4x2, 4>* const p_a = tint_module_vars.a;
   const constant half4x2* const p_a_2 = (&(*p_a)[2]);
   const constant half2* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl
index 4ca3bac4..4193bdd 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const v_1 = a((*tint_module_vars.u));
   half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl
index b39d311..5424830 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread tint_array<half4x2, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl
index 93389e9..0f5bd92 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f16/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device tint_array<half4x2, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 1f67ba9..49e47bd 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float4x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float4x2, 4>* const p_a = tint_module_vars.a;
   const constant float4x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
index b3b6cc7..694e41c 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float4x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float4x2, 4>* const p_a = tint_module_vars.a;
   const constant float4x2* const p_a_2 = (&(*p_a)[2]);
   const constant float2* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl
index 88a5591..3eb642d 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl
index 9da2dfb..e39349f 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float4x2, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl
index 917712a..ed4f4b4 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x2_f32/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device tint_array<float4x2, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 6856843..29f8d17 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<half4x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<half4x3, 4>* const p_a = tint_module_vars.a;
   const constant half4x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant half3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
index c5316d9..10de4e2 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half4x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<half4x3, 4>* const p_a = tint_module_vars.a;
   const constant half4x3* const p_a_2 = (&(*p_a)[2]);
   const constant half3* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl
index 195f28a..cbf80ec 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<half4x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const v_1 = a((*tint_module_vars.u));
   half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl
index 6f079fe..2204e68 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<half4x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread tint_array<half4x3, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 59ab336..f89e227 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float4x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float4x3, 4>* const p_a = tint_module_vars.a;
   const constant float4x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index e0a1c24..9b94863 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float4x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float4x3, 4>* const p_a = tint_module_vars.a;
   const constant float4x3* const p_a_2 = (&(*p_a)[2]);
   const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl
index 7f13ac2f..96b7e37 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float4x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl
index 847112b..682ff67 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float4x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float4x3, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 5fe3f57..600b0ad 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<half4x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<half4x4, 4>* const p_a = tint_module_vars.a;
   const constant half4x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant half4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 9ddf2fd..88fe87e 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half4x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<half4x4, 4>* const p_a = tint_module_vars.a;
   const constant half4x4* const p_a_2 = (&(*p_a)[2]);
   const constant half4* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl
index fc71381..433ab75 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const v_1 = a((*tint_module_vars.u));
   half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl
index 59f6a82..2500b37 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
   thread tint_array<half4x4, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl
index 61051b4..ad04991 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f16/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device tint_array<half4x4, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index f507fba..7e56f75 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 }
 kernel void f(const constant tint_array<float4x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s, .counter=(&counter)};
   const constant tint_array<float4x4, 4>* const p_a = tint_module_vars.a;
   const constant float4x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index c1e9f20..b9cb3ab 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float4x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .s=s};
   const constant tint_array<float4x4, 4>* const p_a = tint_module_vars.a;
   const constant float4x4* const p_a_2 = (&(*p_a)[2]);
   const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl
index 6ca01b6..fbcb3f9 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return f;
 }
 kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const v_1 = a((*tint_module_vars.u));
   float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
   float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl
index 47e38ef..4a0ee90 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 
 kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
   thread tint_array<float4x4, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl
index 4b3a5f6..0251749 100644
--- a/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/array/mat4x4_f32/to_storage.wgsl.expected.ir.msl
@@ -18,7 +18,7 @@
 };
 
 kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device tint_array<float4x4, 4>* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index ad04662..e453caf 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 1970fa5..c3f4588 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl
index 0c6f2ef..cc42bb0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl
index 420cc47..95d7670 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index fad5c3b..6b65e44 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 1c3c2c3..8a4a65d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl
index 7d22fe3..a0f397e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl
index 28c0c90..9f71a6c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 454aa71..564d02a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 8d4e8cb..7457979 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl
index 3fbff88..4237930 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl
index 85a6ad2..67b25ff 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index d93f367..52de548 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 498987e..debd8f5 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl
index 3c77ce1..cfe248c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl
index fad6151..6d47609 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index bc93062..e096668 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
index c41dbb3..ff18959 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl
index d72a5a4..4839eec 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl
index fc9a177..3c00693 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 5680b16..df64b76 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 662374c..39d2cea 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl
index 8294d15..4e87a2e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl
index 4243cf8..569b5dd 100644
--- a/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 5c64921..6ab90b3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 54240b6..fda16e1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl
index bf04a55..a0671a7 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl
index 1232423..a94f30a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index dfe6fbf..3a29813 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 2ede16c..4590e79 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl
index d7d9f54..8dc0cef 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl
index 6d86e13..cfc5553 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x2_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index b2ac467..4e0f663 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 20dd259..c058e63 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl
index 5a5fbe9..37dfffc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl
index 6dd2e33..87c1b0a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 7205444..e409dac 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 8cc89bc..9e36c20 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl
index 8dae9f3..c04aee4 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl
index 4f87d7f..731e932 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 3cc7689..81e8e2d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
index e621906..bfa87de 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl
index b3c0a10c..675a0f4d 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl
index a52db6b..633ccc2 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index eb95e46..e2e809b 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 6abe3b0..712e91c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl
index 375b6b7..135acb3 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl
index c5d5e59..93c316a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index af99486..993e3e9 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
index fee4e98..aeb2905 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl
index fec6911..5e90d90 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl
index 3f7ad3d..3dd8d16 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 8c058e1..5469544 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
index d21986e..1338371 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl
index c4d8718..6940cd1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl
index 636832a..4d8d4c1 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index ea597bc..d667286 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
index 887ffc5..b0996d0 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl
index 0f0d3f9..5b26a0a 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl
index 47e0ffc..3db335c 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index a13af1b..dce291f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
index b1a2bec..f7624ed 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl
index 0f8f2fa..5d7e53e 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl
index 705fe4f..852a4cc 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index c1da52f..591e29f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
index b6998d2..e1a7e42 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl
index 1cb00c3..55d5401 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(half f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl
index ef9038e..34a5362 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index ef7eb1f..4da53ab 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 }
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a, .counter=(&counter)};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
   const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
index 29ee601..6833a9f 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/static_index_via_ptr.wgsl.expected.ir.msl
@@ -23,7 +23,7 @@
 };
 
 kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.a=a};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
   const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
   const constant Outer* const p_a_3 = (&(*p_a)[3]);
   const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl
index 9e538e9..4be37bd 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 void e(float f) {
 }
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[2]);
   c((*tint_module_vars.u)[2].m);
diff --git a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl
index b5f5b49..435a357 100644
--- a/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/struct/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -24,7 +24,7 @@
 
 kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
   thread tint_array<S, 4> p = {};
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
   (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index aa9167c..e2a1d12 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half2x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half2x2* const p_m = tint_module_vars.m;
   const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half2x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl
index b752d0b..574bf67 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half2x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl
index aa953cf..85591f0 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half2x2* u [[buffer(0)]]) {
   thread half2x2 p = half2x2(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl
index 6d5f8e9..47e619e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half2x2* u [[buffer(0)]], device half2x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 66efc9f..d233159 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float2x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float2x2* const p_m = tint_module_vars.m;
   const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float2x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl
index 1308d6d..15dc6ea 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float2x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl
index 679d0e6..f659be7 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float2x2* u [[buffer(0)]]) {
   thread float2x2 p = float2x2(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl
index 43e7c97..8ab3154 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x2_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float2x2* u [[buffer(0)]], device float2x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 417e155..0ccdd97 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half2x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half2x3* const p_m = tint_module_vars.m;
   const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half2x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl
index 7bccb4a..1b10493 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half2x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl
index 37eb19c..dcfa264 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half2x3* u [[buffer(0)]]) {
   thread half2x3 p = half2x3(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl
index b57de7b..6adb685 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f16/to_storage.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(const constant half2x3* u [[buffer(0)]], device half2x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index af9f52c..ee26dae 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float2x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float2x3* const p_m = tint_module_vars.m;
   const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float2x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl
index 477f30b..de4bcff 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float2x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl
index ad75be5..799cc59 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float2x3* u [[buffer(0)]]) {
   thread float2x3 p = float2x3(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl
index e6a439e..1fd389f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x3_f32/to_storage.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(const constant float2x3* u [[buffer(0)]], device float2x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index b357225..7e3500b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half2x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half2x4* const p_m = tint_module_vars.m;
   const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half2x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl
index 5ebe57f..44470f2 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half2x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl
index f76ad5b..3dd4635 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half2x4* u [[buffer(0)]]) {
   thread half2x4 p = half2x4(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl
index 12374ed..e6f3d2a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half2x4* u [[buffer(0)]], device half2x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 135950a..9c929fc 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float2x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float2x4* const p_m = tint_module_vars.m;
   const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float2x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl
index 2c00f86..5b3eaec 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float2x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl
index 4ea2b1c..9ff0696 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float2x4* u [[buffer(0)]]) {
   thread float2x4 p = float2x4(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl
index 513bbdb..7de9821 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat2x4_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float2x4* u [[buffer(0)]], device float2x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 1299144..46359a9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half3x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half3x2* const p_m = tint_module_vars.m;
   const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half3x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl
index a8440f0..19ab623 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half3x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl
index a319e46..56aeece 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half3x2* u [[buffer(0)]]) {
   thread half3x2 p = half3x2(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl
index 950172d..651d8e6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half3x2* u [[buffer(0)]], device half3x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index a35f6c1..44b8310 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float3x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float3x2* const p_m = tint_module_vars.m;
   const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float3x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl
index 4a911c4..5691994 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float3x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl
index 16c0a92..e6eb97a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float3x2* u [[buffer(0)]]) {
   thread float3x2 p = float3x2(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl
index 99f310b..7661f43 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x2_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float3x2* u [[buffer(0)]], device float3x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 7563f3c..2d16645 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half3x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half3x3* const p_m = tint_module_vars.m;
   const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half3x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl
index 42c5649..ec5bcac 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half3x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl
index ac95c53..412a893 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half3x3* u [[buffer(0)]]) {
   thread half3x3 p = half3x3(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl
index 920a8a0..e99a0b6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f16/to_storage.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(const constant half3x3* u [[buffer(0)]], device half3x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index cada3d6..ae1a8b9 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float3x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float3x3* const p_m = tint_module_vars.m;
   const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float3x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl
index a605cc2..0087aba 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float3x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl
index 55dad8a..33e09a8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float3x3* u [[buffer(0)]]) {
   thread float3x3 p = float3x3(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl
index a68a88b..91a0d29 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x3_f32/to_storage.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(const constant float3x3* u [[buffer(0)]], device float3x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index bdeee5b..c43efc3 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half3x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half3x4* const p_m = tint_module_vars.m;
   const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half3x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl
index 68d5ea3..68a249f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half3x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl
index 8cc1d30..a363585 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half3x4* u [[buffer(0)]]) {
   thread half3x4 p = half3x4(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl
index 1c161a2..7e5cbae 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half3x4* u [[buffer(0)]], device half3x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 59bb31a..518ba48 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float3x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float3x4* const p_m = tint_module_vars.m;
   const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float3x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl
index c2e4ef5..ed090b1 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float3x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl
index 820fdbe..204696e 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float3x4* u [[buffer(0)]]) {
   thread float3x4 p = float3x4(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl
index 709265f..0d3788c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat3x4_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float3x4* u [[buffer(0)]], device float3x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 2862bdb..47d3aff 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half4x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half4x2* const p_m = tint_module_vars.m;
   const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half4x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl
index b85213c..e2ca34b 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half4x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl
index 6a9f6f0..98da938 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half4x2* u [[buffer(0)]]) {
   thread half4x2 p = half4x2(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl
index 9c8ca1c..bac8e26 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half4x2* u [[buffer(0)]], device half4x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index bbd0f74..6f7e07d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float4x2* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float4x2* const p_m = tint_module_vars.m;
   const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float4x2 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl
index 2928ebf..7e88410 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float4x2* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].yx);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl
index 5c68541..7531bc8 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float4x2* u [[buffer(0)]]) {
   thread float4x2 p = float4x2(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl
index 776bc7d..f03aacf 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x2_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float4x2* u [[buffer(0)]], device float4x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index dc9211c..a1d953a 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half4x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half4x3* const p_m = tint_module_vars.m;
   const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half4x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl
index 398f88b..1693e1d 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half4x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl
index 3a3d966..d0a3735 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half4x3* u [[buffer(0)]]) {
   thread half4x3 p = half4x3(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl
index 0840a07..f2a5f82 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f16/to_storage.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(const constant half4x3* u [[buffer(0)]], device half4x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index 6516037..3c75994 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float4x3* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float4x3* const p_m = tint_module_vars.m;
   const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float4x3 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl
index 9f85d72..d0f3949 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float4x3* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].zxy);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl
index 3000982..0e26048 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float4x3* u [[buffer(0)]]) {
   thread float4x3 p = float4x3(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl
index 7df73c1..5dbfa50 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x3_f32/to_storage.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(const constant float4x3* u [[buffer(0)]], device float4x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
index f9d687c..1743eb5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant half4x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant half4x4* const p_m = tint_module_vars.m;
   const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   half4x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl
index d6675da..77e0b28 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(half f) {
 }
 kernel void f(const constant half4x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl
index 77a0764..f9734d6 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant half4x4* u [[buffer(0)]]) {
   thread half4x4 p = half4x4(0.0h);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl
index 96f3eb6..59d1aca 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f16/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant half4x4* u [[buffer(0)]], device half4x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
index aa9c4df..afd516f 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/dynamic_index_via_ptr.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 }
 kernel void f(const constant float4x4* m [[buffer(0)]]) {
   thread int counter = 0;
-  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=m, .counter=(&counter)};
   const constant float4x4* const p_m = tint_module_vars.m;
   const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
   float4x4 const l_m = (*p_m);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl
index 8b51e8a..5f01ca5 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_fn.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
 void c(float f) {
 }
 kernel void f(const constant float4x4* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   a((*tint_module_vars.u));
   b((*tint_module_vars.u)[1]);
   b((*tint_module_vars.u)[1].ywxz);
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl
index 270763c..0c17e5c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_private.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 kernel void f(const constant float4x4* u [[buffer(0)]]) {
   thread float4x4 p = float4x4(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .p=(&p)};
   (*tint_module_vars.p) = (*tint_module_vars.u);
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl
index cefcb4b..70d985c 100644
--- a/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/std140/unnested/mat4x4_f32/to_storage.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void f(const constant float4x4* u [[buffer(0)]], device float4x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   (*tint_module_vars.s) = (*tint_module_vars.u);
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
   (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
diff --git a/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
index c5b30d2..d76ba74 100644
--- a/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half* u [[buffer(0)]], device half* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
index dc05668..ae7fc73 100644
--- a/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float* u [[buffer(0)]], device float* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
index dd0fc8a..e15c3ce 100644
--- a/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant int* u [[buffer(0)]], device int* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   int const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
index a05cbb4..ecdafdd 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half2x2* u [[buffer(0)]], device half2x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half2x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
index 9f0111e..cd7b9c7 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float2x2* u [[buffer(0)]], device float2x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float2x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
index 2effcd6..d5c9e13 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void tint_symbol(const constant half2x3* u [[buffer(0)]], device half2x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half2x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
index 19199b6..c9b514e 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void tint_symbol(const constant float2x3* u [[buffer(0)]], device float2x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float2x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
index 2b3cf8f..702e24a 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half2x4* u [[buffer(0)]], device half2x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half2x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
index 80b5744..1b2bd23 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float2x4* u [[buffer(0)]], device float2x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float2x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
index afe4fc4..5a84915 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half3x2* u [[buffer(0)]], device half3x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half3x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
index 4853faa..0b78d97 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float3x2* u [[buffer(0)]], device float3x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float3x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
index efacca3..33102d0 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void tint_symbol(const constant half3x3* u [[buffer(0)]], device half3x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half3x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
index 5e09f19..6befcbd 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void tint_symbol(const constant float3x3* u [[buffer(0)]], device float3x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float3x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
index 957fccc..26e1f6c 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half3x4* u [[buffer(0)]], device half3x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half3x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
index 9caac90..26afe70 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float3x4* u [[buffer(0)]], device float3x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float3x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
index 7895c94..b5c8bd8 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half4x2* u [[buffer(0)]], device half4x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half4x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
index 023b586..88cd34c 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float4x2* u [[buffer(0)]], device float4x2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float4x2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
index 6ffcff3..7992e86f 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void tint_symbol(const constant half4x3* u [[buffer(0)]], device half4x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half4x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
index 3dd2c1d..5f3ab51 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -12,7 +12,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void tint_symbol(const constant float4x3* u [[buffer(0)]], device float4x3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float4x3 const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
index e8c4773..2358b94 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half4x4* u [[buffer(0)]], device half4x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half4x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
index ba36e70..0ac1bc9 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float4x4* u [[buffer(0)]], device float4x4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float4x4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
index a238665..173c33b 100644
--- a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
@@ -22,7 +22,7 @@
   tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
 kernel void tint_symbol(const constant S* u [[buffer(0)]], device S* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   S const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
index bf9bb49..4c72a30 100644
--- a/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
@@ -22,7 +22,7 @@
   tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
 kernel void tint_symbol(const constant S* u [[buffer(0)]], device S* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   S const x = (*tint_module_vars.u);
   tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
diff --git a/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
index 972a627..0324b85 100644
--- a/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant uint* u [[buffer(0)]], device uint* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   uint const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
index 57ff3e9..dc5324c 100644
--- a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half2* u [[buffer(0)]], device half2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
index 8a0d9a6..da1ca0c 100644
--- a/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float2* u [[buffer(0)]], device float2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
index 04f2a65..f3ed80a 100644
--- a/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant int2* u [[buffer(0)]], device int2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   int2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
index db64177..630e3b4 100644
--- a/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant uint2* u [[buffer(0)]], device uint2* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   uint2 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
index 944e852..6ff8e52 100644
--- a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half3* u [[buffer(0)]], device half3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half3 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
index 0ac2e48..106f968 100644
--- a/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float3* u [[buffer(0)]], device float3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float3 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
index c74f20c..a823e97 100644
--- a/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant int3* u [[buffer(0)]], device int3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   int3 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
index 83d9d58..31e9fd5 100644
--- a/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant uint3* u [[buffer(0)]], device uint3* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   uint3 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
index 8472176..3d9bc61 100644
--- a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant half4* u [[buffer(0)]], device half4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   half4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
index 7fc7b21..4a2d36e 100644
--- a/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant float4* u [[buffer(0)]], device float4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   float4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
index 4708c30..0b7f3e3 100644
--- a/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant int4* u [[buffer(0)]], device int4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   int4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
index 2de3973..ce4e9d0 100644
--- a/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 };
 
 kernel void tint_symbol(const constant uint4* u [[buffer(0)]], device uint4* s [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u, .s=s};
   uint4 const x = (*tint_module_vars.u);
   (*tint_module_vars.s) = x;
 }
diff --git a/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl b/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
index 20feeef..3a2143f 100644
--- a/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
+++ b/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
@@ -15,6 +15,6 @@
 fragment float4 tint_symbol() {
   thread frexp_result_f32 a = {};
   thread frexp_result_f32_1 b = frexp_result_f32_1{.fract=0.5f, .exp=1};
-  tint_module_vars_struct const tint_module_vars = {.a=(&a), .b=(&b)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=(&a), .b=(&b)};
   return float4((*tint_module_vars.a).f, (*tint_module_vars.b).fract, 0.0f, 0.0f);
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl
index 93e2b199..dc9067f 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/function.wgsl.expected.ir.msl
@@ -27,7 +27,7 @@
 };
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result};
   S s = {};
   (*tint_module_vars.result).out = s.data[(*tint_module_vars.ubo).dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl
index c572b13..2e1ae86 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/private.wgsl.expected.ir.msl
@@ -29,6 +29,6 @@
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
   thread S s = {};
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result, .s=(&s)};
   (*tint_module_vars.result).out = (*tint_module_vars.s).data[(*tint_module_vars.ubo).dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl
index b4ba2a1..b6f0210 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.ir.msl
@@ -28,6 +28,6 @@
 };
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]], device SSBO* ssbo [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .ssbo=ssbo};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result, .ssbo=ssbo};
   (*tint_module_vars.result).out = (*tint_module_vars.ssbo).data[(*tint_module_vars.ubo).dynamic_idx];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl
index 27a2233..7595941 100644
--- a/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.ir.msl
@@ -25,6 +25,6 @@
 };
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result};
   (*tint_module_vars.result).out = (*tint_module_vars.ubo).data[(*tint_module_vars.ubo).dynamic_idx][0u];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
index e6222b9..e964d05 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
@@ -27,7 +27,7 @@
 };
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result};
   S s = {};
   s.data[(*tint_module_vars.ubo).dynamic_idx] = 1;
   (*tint_module_vars.result).out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl
index ce9dbea..9fe2d93 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   (*p).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
 }
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result};
   S s = {};
   x((&s), tint_module_vars);
   (*tint_module_vars.result).out = s.data[3];
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl
index ddcdabe..1a982b3 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
   thread S s = {};
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result, .s=(&s)};
   (*tint_module_vars.s).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
   (*tint_module_vars.result).out = (*tint_module_vars.s).data[3];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl
index a7bfe01..0e31775 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.ir.msl
@@ -32,7 +32,7 @@
 }
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
   thread S s = {};
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result, .s=(&s)};
   x(tint_module_vars.s, tint_module_vars);
   (*tint_module_vars.result).out = (*tint_module_vars.s).data[3];
 }
diff --git a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl
index 56f87ff..39dd126 100644
--- a/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.ir.msl
@@ -28,7 +28,7 @@
 };
 
 kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]], device SSBO* ssbo [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .ssbo=ssbo};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ubo=ubo, .result=result, .ssbo=ssbo};
   (*tint_module_vars.ssbo).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
   (*tint_module_vars.result).out = (*tint_module_vars.ssbo).data[3];
 }
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl
index bc75e3e..cced0a6 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.ir.msl
@@ -29,7 +29,7 @@
   thread int3 v3i = 0;
   thread uint4 v4u = 0u;
   thread bool2 v2b = false;
-  tint_module_vars_struct const tint_module_vars = {.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
   {
     int i = 0;
     while(true) {
diff --git a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl
index eddd698..410a3d3 100644
--- a/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl
+++ b/test/tint/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.ir.msl
@@ -19,7 +19,7 @@
   thread int3 v3i = 0;
   thread uint4 v4u = 0u;
   thread bool2 v2b = false;
-  tint_module_vars_struct const tint_module_vars = {.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
   {
     int i = 0;
     while(true) {
diff --git a/test/tint/bug/tint/1086.wgsl.expected.ir.msl b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
index 91474dc..7976930 100644
--- a/test/tint/bug/tint/1086.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 fragment void f() {
   thread float v = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
   g(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/1369.wgsl.expected.ir.msl b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
index 7aa3f8d..3b26d33 100644
--- a/test/tint/bug/tint/1369.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
 }
 fragment void f() {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.continue_execution=(&continue_execution)};
   bool v = call_discard(tint_module_vars);
   bool also_unreachable = false;
   if (!((*tint_module_vars.continue_execution))) {
diff --git a/test/tint/bug/tint/1385.wgsl.expected.ir.msl b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
index 49062f4..3748831 100644
--- a/test/tint/bug/tint/1385.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
@@ -20,6 +20,6 @@
   return (*tint_module_vars.data)[0];
 }
 kernel void tint_symbol(const device tint_array<int, 1>* data [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   foo(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/1509.wgsl.expected.ir.msl b/test/tint/bug/tint/1509.wgsl.expected.ir.msl
index 0f0cce6..6fd018b 100644
--- a/test/tint/bug/tint/1509.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1509.wgsl.expected.ir.msl
@@ -3008,6 +3008,6 @@
   thread uint v997 = 0u;
   thread uint v998 = 0u;
   thread uint v999 = 0u;
-  tint_module_vars_struct const tint_module_vars = {.v0=(&v0), .v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16), .v17=(&v17), .v18=(&v18), .v19=(&v19), .v20=(&v20), .v21=(&v21), .v22=(&v22), .v23=(&v23), .v24=(&v24), .v25=(&v25), .v26=(&v26), .v27=(&v27), .v28=(&v28), .v29=(&v29), .v30=(&v30), .v31=(&v31), .v32=(&v32), .v33=(&v33), .v34=(&v34), .v35=(&v35), .v36=(&v36), .v37=(&v37), .v38=(&v38), .v39=(&v39), .v40=(&v40), .v41=(&v41), .v42=(&v42), .v43=(&v43), .v44=(&v44), .v45=(&v45), .v46=(&v46), .v47=(&v47), .v48=(&v48), .v49=(&v49), .v50=(&v50), .v51=(&v51), .v52=(&v52), .v53=(&v53), .v54=(&v54), .v55=(&v55), .v56=(&v56), .v57=(&v57), .v58=(&v58), .v59=(&v59), .v60=(&v60), .v61=(&v61), .v62=(&v62), .v63=(&v63), .v64=(&v64), .v65=(&v65), .v66=(&v66), .v67=(&v67), .v68=(&v68), .v69=(&v69), .v70=(&v70), .v71=(&v71), .v72=(&v72), .v73=(&v73), .v74=(&v74), .v75=(&v75), .v76=(&v76), .v77=(&v77), .v78=(&v78), .v79=(&v79), .v80=(&v80), .v81=(&v81), .v82=(&v82), .v83=(&v83), .v84=(&v84), .v85=(&v85), .v86=(&v86), .v87=(&v87), .v88=(&v88), .v89=(&v89), .v90=(&v90), .v91=(&v91), .v92=(&v92), .v93=(&v93), .v94=(&v94), .v95=(&v95), .v96=(&v96), .v97=(&v97), .v98=(&v98), .v99=(&v99), .v100=(&v100), .v101=(&v101), .v102=(&v102), .v103=(&v103), .v104=(&v104), .v105=(&v105), .v106=(&v106), .v107=(&v107), .v108=(&v108), .v109=(&v109), .v110=(&v110), .v111=(&v111), .v112=(&v112), .v113=(&v113), .v114=(&v114), .v115=(&v115), .v116=(&v116), .v117=(&v117), .v118=(&v118), .v119=(&v119), .v120=(&v120), .v121=(&v121), .v122=(&v122), .v123=(&v123), .v124=(&v124), .v125=(&v125), .v126=(&v126), .v127=(&v127), .v128=(&v128), .v129=(&v129), .v130=(&v130), .v131=(&v131), .v132=(&v132), .v133=(&v133), .v134=(&v134), .v135=(&v135), .v136=(&v136), .v137=(&v137), .v138=(&v138), .v139=(&v139), .v140=(&v140), .v141=(&v141), .v142=(&v142), .v143=(&v143), .v144=(&v144), .v145=(&v145), .v146=(&v146), .v147=(&v147), .v148=(&v148), .v149=(&v149), .v150=(&v150), .v151=(&v151), .v152=(&v152), .v153=(&v153), .v154=(&v154), .v155=(&v155), .v156=(&v156), .v157=(&v157), .v158=(&v158), .v159=(&v159), .v160=(&v160), .v161=(&v161), .v162=(&v162), .v163=(&v163), .v164=(&v164), .v165=(&v165), .v166=(&v166), .v167=(&v167), .v168=(&v168), .v169=(&v169), .v170=(&v170), .v171=(&v171), .v172=(&v172), .v173=(&v173), .v174=(&v174), .v175=(&v175), .v176=(&v176), .v177=(&v177), .v178=(&v178), .v179=(&v179), .v180=(&v180), .v181=(&v181), .v182=(&v182), .v183=(&v183), .v184=(&v184), .v185=(&v185), .v186=(&v186), .v187=(&v187), .v188=(&v188), .v189=(&v189), .v190=(&v190), .v191=(&v191), .v192=(&v192), .v193=(&v193), .v194=(&v194), .v195=(&v195), .v196=(&v196), .v197=(&v197), .v198=(&v198), .v199=(&v199), .v200=(&v200), .v201=(&v201), .v202=(&v202), .v203=(&v203), .v204=(&v204), .v205=(&v205), .v206=(&v206), .v207=(&v207), .v208=(&v208), .v209=(&v209), .v210=(&v210), .v211=(&v211), .v212=(&v212), .v213=(&v213), .v214=(&v214), .v215=(&v215), .v216=(&v216), .v217=(&v217), .v218=(&v218), .v219=(&v219), .v220=(&v220), .v221=(&v221), .v222=(&v222), .v223=(&v223), .v224=(&v224), .v225=(&v225), .v226=(&v226), .v227=(&v227), .v228=(&v228), .v229=(&v229), .v230=(&v230), .v231=(&v231), .v232=(&v232), .v233=(&v233), .v234=(&v234), .v235=(&v235), .v236=(&v236), .v237=(&v237), .v238=(&v238), .v239=(&v239), .v240=(&v240), .v241=(&v241), .v242=(&v242), .v243=(&v243), .v244=(&v244), .v245=(&v245), .v246=(&v246), .v247=(&v247), .v248=(&v248), .v249=(&v249), .v250=(&v250), .v251=(&v251), .v252=(&v252), .v253=(&v253), .v254=(&v254), .v255=(&v255), .v256=(&v256), .v257=(&v257), .v258=(&v258), .v259=(&v259), .v260=(&v260), .v261=(&v261), .v262=(&v262), .v263=(&v263), .v264=(&v264), .v265=(&v265), .v266=(&v266), .v267=(&v267), .v268=(&v268), .v269=(&v269), .v270=(&v270), .v271=(&v271), .v272=(&v272), .v273=(&v273), .v274=(&v274), .v275=(&v275), .v276=(&v276), .v277=(&v277), .v278=(&v278), .v279=(&v279), .v280=(&v280), .v281=(&v281), .v282=(&v282), .v283=(&v283), .v284=(&v284), .v285=(&v285), .v286=(&v286), .v287=(&v287), .v288=(&v288), .v289=(&v289), .v290=(&v290), .v291=(&v291), .v292=(&v292), .v293=(&v293), .v294=(&v294), .v295=(&v295), .v296=(&v296), .v297=(&v297), .v298=(&v298), .v299=(&v299), .v300=(&v300), .v301=(&v301), .v302=(&v302), .v303=(&v303), .v304=(&v304), .v305=(&v305), .v306=(&v306), .v307=(&v307), .v308=(&v308), .v309=(&v309), .v310=(&v310), .v311=(&v311), .v312=(&v312), .v313=(&v313), .v314=(&v314), .v315=(&v315), .v316=(&v316), .v317=(&v317), .v318=(&v318), .v319=(&v319), .v320=(&v320), .v321=(&v321), .v322=(&v322), .v323=(&v323), .v324=(&v324), .v325=(&v325), .v326=(&v326), .v327=(&v327), .v328=(&v328), .v329=(&v329), .v330=(&v330), .v331=(&v331), .v332=(&v332), .v333=(&v333), .v334=(&v334), .v335=(&v335), .v336=(&v336), .v337=(&v337), .v338=(&v338), .v339=(&v339), .v340=(&v340), .v341=(&v341), .v342=(&v342), .v343=(&v343), .v344=(&v344), .v345=(&v345), .v346=(&v346), .v347=(&v347), .v348=(&v348), .v349=(&v349), .v350=(&v350), .v351=(&v351), .v352=(&v352), .v353=(&v353), .v354=(&v354), .v355=(&v355), .v356=(&v356), .v357=(&v357), .v358=(&v358), .v359=(&v359), .v360=(&v360), .v361=(&v361), .v362=(&v362), .v363=(&v363), .v364=(&v364), .v365=(&v365), .v366=(&v366), .v367=(&v367), .v368=(&v368), .v369=(&v369), .v370=(&v370), .v371=(&v371), .v372=(&v372), .v373=(&v373), .v374=(&v374), .v375=(&v375), .v376=(&v376), .v377=(&v377), .v378=(&v378), .v379=(&v379), .v380=(&v380), .v381=(&v381), .v382=(&v382), .v383=(&v383), .v384=(&v384), .v385=(&v385), .v386=(&v386), .v387=(&v387), .v388=(&v388), .v389=(&v389), .v390=(&v390), .v391=(&v391), .v392=(&v392), .v393=(&v393), .v394=(&v394), .v395=(&v395), .v396=(&v396), .v397=(&v397), .v398=(&v398), .v399=(&v399), .v400=(&v400), .v401=(&v401), .v402=(&v402), .v403=(&v403), .v404=(&v404), .v405=(&v405), .v406=(&v406), .v407=(&v407), .v408=(&v408), .v409=(&v409), .v410=(&v410), .v411=(&v411), .v412=(&v412), .v413=(&v413), .v414=(&v414), .v415=(&v415), .v416=(&v416), .v417=(&v417), .v418=(&v418), .v419=(&v419), .v420=(&v420), .v421=(&v421), .v422=(&v422), .v423=(&v423), .v424=(&v424), .v425=(&v425), .v426=(&v426), .v427=(&v427), .v428=(&v428), .v429=(&v429), .v430=(&v430), .v431=(&v431), .v432=(&v432), .v433=(&v433), .v434=(&v434), .v435=(&v435), .v436=(&v436), .v437=(&v437), .v438=(&v438), .v439=(&v439), .v440=(&v440), .v441=(&v441), .v442=(&v442), .v443=(&v443), .v444=(&v444), .v445=(&v445), .v446=(&v446), .v447=(&v447), .v448=(&v448), .v449=(&v449), .v450=(&v450), .v451=(&v451), .v452=(&v452), .v453=(&v453), .v454=(&v454), .v455=(&v455), .v456=(&v456), .v457=(&v457), .v458=(&v458), .v459=(&v459), .v460=(&v460), .v461=(&v461), .v462=(&v462), .v463=(&v463), .v464=(&v464), .v465=(&v465), .v466=(&v466), .v467=(&v467), .v468=(&v468), .v469=(&v469), .v470=(&v470), .v471=(&v471), .v472=(&v472), .v473=(&v473), .v474=(&v474), .v475=(&v475), .v476=(&v476), .v477=(&v477), .v478=(&v478), .v479=(&v479), .v480=(&v480), .v481=(&v481), .v482=(&v482), .v483=(&v483), .v484=(&v484), .v485=(&v485), .v486=(&v486), .v487=(&v487), .v488=(&v488), .v489=(&v489), .v490=(&v490), .v491=(&v491), .v492=(&v492), .v493=(&v493), .v494=(&v494), .v495=(&v495), .v496=(&v496), .v497=(&v497), .v498=(&v498), .v499=(&v499), .v500=(&v500), .v501=(&v501), .v502=(&v502), .v503=(&v503), .v504=(&v504), .v505=(&v505), .v506=(&v506), .v507=(&v507), .v508=(&v508), .v509=(&v509), .v510=(&v510), .v511=(&v511), .v512=(&v512), .v513=(&v513), .v514=(&v514), .v515=(&v515), .v516=(&v516), .v517=(&v517), .v518=(&v518), .v519=(&v519), .v520=(&v520), .v521=(&v521), .v522=(&v522), .v523=(&v523), .v524=(&v524), .v525=(&v525), .v526=(&v526), .v527=(&v527), .v528=(&v528), .v529=(&v529), .v530=(&v530), .v531=(&v531), .v532=(&v532), .v533=(&v533), .v534=(&v534), .v535=(&v535), .v536=(&v536), .v537=(&v537), .v538=(&v538), .v539=(&v539), .v540=(&v540), .v541=(&v541), .v542=(&v542), .v543=(&v543), .v544=(&v544), .v545=(&v545), .v546=(&v546), .v547=(&v547), .v548=(&v548), .v549=(&v549), .v550=(&v550), .v551=(&v551), .v552=(&v552), .v553=(&v553), .v554=(&v554), .v555=(&v555), .v556=(&v556), .v557=(&v557), .v558=(&v558), .v559=(&v559), .v560=(&v560), .v561=(&v561), .v562=(&v562), .v563=(&v563), .v564=(&v564), .v565=(&v565), .v566=(&v566), .v567=(&v567), .v568=(&v568), .v569=(&v569), .v570=(&v570), .v571=(&v571), .v572=(&v572), .v573=(&v573), .v574=(&v574), .v575=(&v575), .v576=(&v576), .v577=(&v577), .v578=(&v578), .v579=(&v579), .v580=(&v580), .v581=(&v581), .v582=(&v582), .v583=(&v583), .v584=(&v584), .v585=(&v585), .v586=(&v586), .v587=(&v587), .v588=(&v588), .v589=(&v589), .v590=(&v590), .v591=(&v591), .v592=(&v592), .v593=(&v593), .v594=(&v594), .v595=(&v595), .v596=(&v596), .v597=(&v597), .v598=(&v598), .v599=(&v599), .v600=(&v600), .v601=(&v601), .v602=(&v602), .v603=(&v603), .v604=(&v604), .v605=(&v605), .v606=(&v606), .v607=(&v607), .v608=(&v608), .v609=(&v609), .v610=(&v610), .v611=(&v611), .v612=(&v612), .v613=(&v613), .v614=(&v614), .v615=(&v615), .v616=(&v616), .v617=(&v617), .v618=(&v618), .v619=(&v619), .v620=(&v620), .v621=(&v621), .v622=(&v622), .v623=(&v623), .v624=(&v624), .v625=(&v625), .v626=(&v626), .v627=(&v627), .v628=(&v628), .v629=(&v629), .v630=(&v630), .v631=(&v631), .v632=(&v632), .v633=(&v633), .v634=(&v634), .v635=(&v635), .v636=(&v636), .v637=(&v637), .v638=(&v638), .v639=(&v639), .v640=(&v640), .v641=(&v641), .v642=(&v642), .v643=(&v643), .v644=(&v644), .v645=(&v645), .v646=(&v646), .v647=(&v647), .v648=(&v648), .v649=(&v649), .v650=(&v650), .v651=(&v651), .v652=(&v652), .v653=(&v653), .v654=(&v654), .v655=(&v655), .v656=(&v656), .v657=(&v657), .v658=(&v658), .v659=(&v659), .v660=(&v660), .v661=(&v661), .v662=(&v662), .v663=(&v663), .v664=(&v664), .v665=(&v665), .v666=(&v666), .v667=(&v667), .v668=(&v668), .v669=(&v669), .v670=(&v670), .v671=(&v671), .v672=(&v672), .v673=(&v673), .v674=(&v674), .v675=(&v675), .v676=(&v676), .v677=(&v677), .v678=(&v678), .v679=(&v679), .v680=(&v680), .v681=(&v681), .v682=(&v682), .v683=(&v683), .v684=(&v684), .v685=(&v685), .v686=(&v686), .v687=(&v687), .v688=(&v688), .v689=(&v689), .v690=(&v690), .v691=(&v691), .v692=(&v692), .v693=(&v693), .v694=(&v694), .v695=(&v695), .v696=(&v696), .v697=(&v697), .v698=(&v698), .v699=(&v699), .v700=(&v700), .v701=(&v701), .v702=(&v702), .v703=(&v703), .v704=(&v704), .v705=(&v705), .v706=(&v706), .v707=(&v707), .v708=(&v708), .v709=(&v709), .v710=(&v710), .v711=(&v711), .v712=(&v712), .v713=(&v713), .v714=(&v714), .v715=(&v715), .v716=(&v716), .v717=(&v717), .v718=(&v718), .v719=(&v719), .v720=(&v720), .v721=(&v721), .v722=(&v722), .v723=(&v723), .v724=(&v724), .v725=(&v725), .v726=(&v726), .v727=(&v727), .v728=(&v728), .v729=(&v729), .v730=(&v730), .v731=(&v731), .v732=(&v732), .v733=(&v733), .v734=(&v734), .v735=(&v735), .v736=(&v736), .v737=(&v737), .v738=(&v738), .v739=(&v739), .v740=(&v740), .v741=(&v741), .v742=(&v742), .v743=(&v743), .v744=(&v744), .v745=(&v745), .v746=(&v746), .v747=(&v747), .v748=(&v748), .v749=(&v749), .v750=(&v750), .v751=(&v751), .v752=(&v752), .v753=(&v753), .v754=(&v754), .v755=(&v755), .v756=(&v756), .v757=(&v757), .v758=(&v758), .v759=(&v759), .v760=(&v760), .v761=(&v761), .v762=(&v762), .v763=(&v763), .v764=(&v764), .v765=(&v765), .v766=(&v766), .v767=(&v767), .v768=(&v768), .v769=(&v769), .v770=(&v770), .v771=(&v771), .v772=(&v772), .v773=(&v773), .v774=(&v774), .v775=(&v775), .v776=(&v776), .v777=(&v777), .v778=(&v778), .v779=(&v779), .v780=(&v780), .v781=(&v781), .v782=(&v782), .v783=(&v783), .v784=(&v784), .v785=(&v785), .v786=(&v786), .v787=(&v787), .v788=(&v788), .v789=(&v789), .v790=(&v790), .v791=(&v791), .v792=(&v792), .v793=(&v793), .v794=(&v794), .v795=(&v795), .v796=(&v796), .v797=(&v797), .v798=(&v798), .v799=(&v799), .v800=(&v800), .v801=(&v801), .v802=(&v802), .v803=(&v803), .v804=(&v804), .v805=(&v805), .v806=(&v806), .v807=(&v807), .v808=(&v808), .v809=(&v809), .v810=(&v810), .v811=(&v811), .v812=(&v812), .v813=(&v813), .v814=(&v814), .v815=(&v815), .v816=(&v816), .v817=(&v817), .v818=(&v818), .v819=(&v819), .v820=(&v820), .v821=(&v821), .v822=(&v822), .v823=(&v823), .v824=(&v824), .v825=(&v825), .v826=(&v826), .v827=(&v827), .v828=(&v828), .v829=(&v829), .v830=(&v830), .v831=(&v831), .v832=(&v832), .v833=(&v833), .v834=(&v834), .v835=(&v835), .v836=(&v836), .v837=(&v837), .v838=(&v838), .v839=(&v839), .v840=(&v840), .v841=(&v841), .v842=(&v842), .v843=(&v843), .v844=(&v844), .v845=(&v845), .v846=(&v846), .v847=(&v847), .v848=(&v848), .v849=(&v849), .v850=(&v850), .v851=(&v851), .v852=(&v852), .v853=(&v853), .v854=(&v854), .v855=(&v855), .v856=(&v856), .v857=(&v857), .v858=(&v858), .v859=(&v859), .v860=(&v860), .v861=(&v861), .v862=(&v862), .v863=(&v863), .v864=(&v864), .v865=(&v865), .v866=(&v866), .v867=(&v867), .v868=(&v868), .v869=(&v869), .v870=(&v870), .v871=(&v871), .v872=(&v872), .v873=(&v873), .v874=(&v874), .v875=(&v875), .v876=(&v876), .v877=(&v877), .v878=(&v878), .v879=(&v879), .v880=(&v880), .v881=(&v881), .v882=(&v882), .v883=(&v883), .v884=(&v884), .v885=(&v885), .v886=(&v886), .v887=(&v887), .v888=(&v888), .v889=(&v889), .v890=(&v890), .v891=(&v891), .v892=(&v892), .v893=(&v893), .v894=(&v894), .v895=(&v895), .v896=(&v896), .v897=(&v897), .v898=(&v898), .v899=(&v899), .v900=(&v900), .v901=(&v901), .v902=(&v902), .v903=(&v903), .v904=(&v904), .v905=(&v905), .v906=(&v906), .v907=(&v907), .v908=(&v908), .v909=(&v909), .v910=(&v910), .v911=(&v911), .v912=(&v912), .v913=(&v913), .v914=(&v914), .v915=(&v915), .v916=(&v916), .v917=(&v917), .v918=(&v918), .v919=(&v919), .v920=(&v920), .v921=(&v921), .v922=(&v922), .v923=(&v923), .v924=(&v924), .v925=(&v925), .v926=(&v926), .v927=(&v927), .v928=(&v928), .v929=(&v929), .v930=(&v930), .v931=(&v931), .v932=(&v932), .v933=(&v933), .v934=(&v934), .v935=(&v935), .v936=(&v936), .v937=(&v937), .v938=(&v938), .v939=(&v939), .v940=(&v940), .v941=(&v941), .v942=(&v942), .v943=(&v943), .v944=(&v944), .v945=(&v945), .v946=(&v946), .v947=(&v947), .v948=(&v948), .v949=(&v949), .v950=(&v950), .v951=(&v951), .v952=(&v952), .v953=(&v953), .v954=(&v954), .v955=(&v955), .v956=(&v956), .v957=(&v957), .v958=(&v958), .v959=(&v959), .v960=(&v960), .v961=(&v961), .v962=(&v962), .v963=(&v963), .v964=(&v964), .v965=(&v965), .v966=(&v966), .v967=(&v967), .v968=(&v968), .v969=(&v969), .v970=(&v970), .v971=(&v971), .v972=(&v972), .v973=(&v973), .v974=(&v974), .v975=(&v975), .v976=(&v976), .v977=(&v977), .v978=(&v978), .v979=(&v979), .v980=(&v980), .v981=(&v981), .v982=(&v982), .v983=(&v983), .v984=(&v984), .v985=(&v985), .v986=(&v986), .v987=(&v987), .v988=(&v988), .v989=(&v989), .v990=(&v990), .v991=(&v991), .v992=(&v992), .v993=(&v993), .v994=(&v994), .v995=(&v995), .v996=(&v996), .v997=(&v997), .v998=(&v998), .v999=(&v999)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v0=(&v0), .v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16), .v17=(&v17), .v18=(&v18), .v19=(&v19), .v20=(&v20), .v21=(&v21), .v22=(&v22), .v23=(&v23), .v24=(&v24), .v25=(&v25), .v26=(&v26), .v27=(&v27), .v28=(&v28), .v29=(&v29), .v30=(&v30), .v31=(&v31), .v32=(&v32), .v33=(&v33), .v34=(&v34), .v35=(&v35), .v36=(&v36), .v37=(&v37), .v38=(&v38), .v39=(&v39), .v40=(&v40), .v41=(&v41), .v42=(&v42), .v43=(&v43), .v44=(&v44), .v45=(&v45), .v46=(&v46), .v47=(&v47), .v48=(&v48), .v49=(&v49), .v50=(&v50), .v51=(&v51), .v52=(&v52), .v53=(&v53), .v54=(&v54), .v55=(&v55), .v56=(&v56), .v57=(&v57), .v58=(&v58), .v59=(&v59), .v60=(&v60), .v61=(&v61), .v62=(&v62), .v63=(&v63), .v64=(&v64), .v65=(&v65), .v66=(&v66), .v67=(&v67), .v68=(&v68), .v69=(&v69), .v70=(&v70), .v71=(&v71), .v72=(&v72), .v73=(&v73), .v74=(&v74), .v75=(&v75), .v76=(&v76), .v77=(&v77), .v78=(&v78), .v79=(&v79), .v80=(&v80), .v81=(&v81), .v82=(&v82), .v83=(&v83), .v84=(&v84), .v85=(&v85), .v86=(&v86), .v87=(&v87), .v88=(&v88), .v89=(&v89), .v90=(&v90), .v91=(&v91), .v92=(&v92), .v93=(&v93), .v94=(&v94), .v95=(&v95), .v96=(&v96), .v97=(&v97), .v98=(&v98), .v99=(&v99), .v100=(&v100), .v101=(&v101), .v102=(&v102), .v103=(&v103), .v104=(&v104), .v105=(&v105), .v106=(&v106), .v107=(&v107), .v108=(&v108), .v109=(&v109), .v110=(&v110), .v111=(&v111), .v112=(&v112), .v113=(&v113), .v114=(&v114), .v115=(&v115), .v116=(&v116), .v117=(&v117), .v118=(&v118), .v119=(&v119), .v120=(&v120), .v121=(&v121), .v122=(&v122), .v123=(&v123), .v124=(&v124), .v125=(&v125), .v126=(&v126), .v127=(&v127), .v128=(&v128), .v129=(&v129), .v130=(&v130), .v131=(&v131), .v132=(&v132), .v133=(&v133), .v134=(&v134), .v135=(&v135), .v136=(&v136), .v137=(&v137), .v138=(&v138), .v139=(&v139), .v140=(&v140), .v141=(&v141), .v142=(&v142), .v143=(&v143), .v144=(&v144), .v145=(&v145), .v146=(&v146), .v147=(&v147), .v148=(&v148), .v149=(&v149), .v150=(&v150), .v151=(&v151), .v152=(&v152), .v153=(&v153), .v154=(&v154), .v155=(&v155), .v156=(&v156), .v157=(&v157), .v158=(&v158), .v159=(&v159), .v160=(&v160), .v161=(&v161), .v162=(&v162), .v163=(&v163), .v164=(&v164), .v165=(&v165), .v166=(&v166), .v167=(&v167), .v168=(&v168), .v169=(&v169), .v170=(&v170), .v171=(&v171), .v172=(&v172), .v173=(&v173), .v174=(&v174), .v175=(&v175), .v176=(&v176), .v177=(&v177), .v178=(&v178), .v179=(&v179), .v180=(&v180), .v181=(&v181), .v182=(&v182), .v183=(&v183), .v184=(&v184), .v185=(&v185), .v186=(&v186), .v187=(&v187), .v188=(&v188), .v189=(&v189), .v190=(&v190), .v191=(&v191), .v192=(&v192), .v193=(&v193), .v194=(&v194), .v195=(&v195), .v196=(&v196), .v197=(&v197), .v198=(&v198), .v199=(&v199), .v200=(&v200), .v201=(&v201), .v202=(&v202), .v203=(&v203), .v204=(&v204), .v205=(&v205), .v206=(&v206), .v207=(&v207), .v208=(&v208), .v209=(&v209), .v210=(&v210), .v211=(&v211), .v212=(&v212), .v213=(&v213), .v214=(&v214), .v215=(&v215), .v216=(&v216), .v217=(&v217), .v218=(&v218), .v219=(&v219), .v220=(&v220), .v221=(&v221), .v222=(&v222), .v223=(&v223), .v224=(&v224), .v225=(&v225), .v226=(&v226), .v227=(&v227), .v228=(&v228), .v229=(&v229), .v230=(&v230), .v231=(&v231), .v232=(&v232), .v233=(&v233), .v234=(&v234), .v235=(&v235), .v236=(&v236), .v237=(&v237), .v238=(&v238), .v239=(&v239), .v240=(&v240), .v241=(&v241), .v242=(&v242), .v243=(&v243), .v244=(&v244), .v245=(&v245), .v246=(&v246), .v247=(&v247), .v248=(&v248), .v249=(&v249), .v250=(&v250), .v251=(&v251), .v252=(&v252), .v253=(&v253), .v254=(&v254), .v255=(&v255), .v256=(&v256), .v257=(&v257), .v258=(&v258), .v259=(&v259), .v260=(&v260), .v261=(&v261), .v262=(&v262), .v263=(&v263), .v264=(&v264), .v265=(&v265), .v266=(&v266), .v267=(&v267), .v268=(&v268), .v269=(&v269), .v270=(&v270), .v271=(&v271), .v272=(&v272), .v273=(&v273), .v274=(&v274), .v275=(&v275), .v276=(&v276), .v277=(&v277), .v278=(&v278), .v279=(&v279), .v280=(&v280), .v281=(&v281), .v282=(&v282), .v283=(&v283), .v284=(&v284), .v285=(&v285), .v286=(&v286), .v287=(&v287), .v288=(&v288), .v289=(&v289), .v290=(&v290), .v291=(&v291), .v292=(&v292), .v293=(&v293), .v294=(&v294), .v295=(&v295), .v296=(&v296), .v297=(&v297), .v298=(&v298), .v299=(&v299), .v300=(&v300), .v301=(&v301), .v302=(&v302), .v303=(&v303), .v304=(&v304), .v305=(&v305), .v306=(&v306), .v307=(&v307), .v308=(&v308), .v309=(&v309), .v310=(&v310), .v311=(&v311), .v312=(&v312), .v313=(&v313), .v314=(&v314), .v315=(&v315), .v316=(&v316), .v317=(&v317), .v318=(&v318), .v319=(&v319), .v320=(&v320), .v321=(&v321), .v322=(&v322), .v323=(&v323), .v324=(&v324), .v325=(&v325), .v326=(&v326), .v327=(&v327), .v328=(&v328), .v329=(&v329), .v330=(&v330), .v331=(&v331), .v332=(&v332), .v333=(&v333), .v334=(&v334), .v335=(&v335), .v336=(&v336), .v337=(&v337), .v338=(&v338), .v339=(&v339), .v340=(&v340), .v341=(&v341), .v342=(&v342), .v343=(&v343), .v344=(&v344), .v345=(&v345), .v346=(&v346), .v347=(&v347), .v348=(&v348), .v349=(&v349), .v350=(&v350), .v351=(&v351), .v352=(&v352), .v353=(&v353), .v354=(&v354), .v355=(&v355), .v356=(&v356), .v357=(&v357), .v358=(&v358), .v359=(&v359), .v360=(&v360), .v361=(&v361), .v362=(&v362), .v363=(&v363), .v364=(&v364), .v365=(&v365), .v366=(&v366), .v367=(&v367), .v368=(&v368), .v369=(&v369), .v370=(&v370), .v371=(&v371), .v372=(&v372), .v373=(&v373), .v374=(&v374), .v375=(&v375), .v376=(&v376), .v377=(&v377), .v378=(&v378), .v379=(&v379), .v380=(&v380), .v381=(&v381), .v382=(&v382), .v383=(&v383), .v384=(&v384), .v385=(&v385), .v386=(&v386), .v387=(&v387), .v388=(&v388), .v389=(&v389), .v390=(&v390), .v391=(&v391), .v392=(&v392), .v393=(&v393), .v394=(&v394), .v395=(&v395), .v396=(&v396), .v397=(&v397), .v398=(&v398), .v399=(&v399), .v400=(&v400), .v401=(&v401), .v402=(&v402), .v403=(&v403), .v404=(&v404), .v405=(&v405), .v406=(&v406), .v407=(&v407), .v408=(&v408), .v409=(&v409), .v410=(&v410), .v411=(&v411), .v412=(&v412), .v413=(&v413), .v414=(&v414), .v415=(&v415), .v416=(&v416), .v417=(&v417), .v418=(&v418), .v419=(&v419), .v420=(&v420), .v421=(&v421), .v422=(&v422), .v423=(&v423), .v424=(&v424), .v425=(&v425), .v426=(&v426), .v427=(&v427), .v428=(&v428), .v429=(&v429), .v430=(&v430), .v431=(&v431), .v432=(&v432), .v433=(&v433), .v434=(&v434), .v435=(&v435), .v436=(&v436), .v437=(&v437), .v438=(&v438), .v439=(&v439), .v440=(&v440), .v441=(&v441), .v442=(&v442), .v443=(&v443), .v444=(&v444), .v445=(&v445), .v446=(&v446), .v447=(&v447), .v448=(&v448), .v449=(&v449), .v450=(&v450), .v451=(&v451), .v452=(&v452), .v453=(&v453), .v454=(&v454), .v455=(&v455), .v456=(&v456), .v457=(&v457), .v458=(&v458), .v459=(&v459), .v460=(&v460), .v461=(&v461), .v462=(&v462), .v463=(&v463), .v464=(&v464), .v465=(&v465), .v466=(&v466), .v467=(&v467), .v468=(&v468), .v469=(&v469), .v470=(&v470), .v471=(&v471), .v472=(&v472), .v473=(&v473), .v474=(&v474), .v475=(&v475), .v476=(&v476), .v477=(&v477), .v478=(&v478), .v479=(&v479), .v480=(&v480), .v481=(&v481), .v482=(&v482), .v483=(&v483), .v484=(&v484), .v485=(&v485), .v486=(&v486), .v487=(&v487), .v488=(&v488), .v489=(&v489), .v490=(&v490), .v491=(&v491), .v492=(&v492), .v493=(&v493), .v494=(&v494), .v495=(&v495), .v496=(&v496), .v497=(&v497), .v498=(&v498), .v499=(&v499), .v500=(&v500), .v501=(&v501), .v502=(&v502), .v503=(&v503), .v504=(&v504), .v505=(&v505), .v506=(&v506), .v507=(&v507), .v508=(&v508), .v509=(&v509), .v510=(&v510), .v511=(&v511), .v512=(&v512), .v513=(&v513), .v514=(&v514), .v515=(&v515), .v516=(&v516), .v517=(&v517), .v518=(&v518), .v519=(&v519), .v520=(&v520), .v521=(&v521), .v522=(&v522), .v523=(&v523), .v524=(&v524), .v525=(&v525), .v526=(&v526), .v527=(&v527), .v528=(&v528), .v529=(&v529), .v530=(&v530), .v531=(&v531), .v532=(&v532), .v533=(&v533), .v534=(&v534), .v535=(&v535), .v536=(&v536), .v537=(&v537), .v538=(&v538), .v539=(&v539), .v540=(&v540), .v541=(&v541), .v542=(&v542), .v543=(&v543), .v544=(&v544), .v545=(&v545), .v546=(&v546), .v547=(&v547), .v548=(&v548), .v549=(&v549), .v550=(&v550), .v551=(&v551), .v552=(&v552), .v553=(&v553), .v554=(&v554), .v555=(&v555), .v556=(&v556), .v557=(&v557), .v558=(&v558), .v559=(&v559), .v560=(&v560), .v561=(&v561), .v562=(&v562), .v563=(&v563), .v564=(&v564), .v565=(&v565), .v566=(&v566), .v567=(&v567), .v568=(&v568), .v569=(&v569), .v570=(&v570), .v571=(&v571), .v572=(&v572), .v573=(&v573), .v574=(&v574), .v575=(&v575), .v576=(&v576), .v577=(&v577), .v578=(&v578), .v579=(&v579), .v580=(&v580), .v581=(&v581), .v582=(&v582), .v583=(&v583), .v584=(&v584), .v585=(&v585), .v586=(&v586), .v587=(&v587), .v588=(&v588), .v589=(&v589), .v590=(&v590), .v591=(&v591), .v592=(&v592), .v593=(&v593), .v594=(&v594), .v595=(&v595), .v596=(&v596), .v597=(&v597), .v598=(&v598), .v599=(&v599), .v600=(&v600), .v601=(&v601), .v602=(&v602), .v603=(&v603), .v604=(&v604), .v605=(&v605), .v606=(&v606), .v607=(&v607), .v608=(&v608), .v609=(&v609), .v610=(&v610), .v611=(&v611), .v612=(&v612), .v613=(&v613), .v614=(&v614), .v615=(&v615), .v616=(&v616), .v617=(&v617), .v618=(&v618), .v619=(&v619), .v620=(&v620), .v621=(&v621), .v622=(&v622), .v623=(&v623), .v624=(&v624), .v625=(&v625), .v626=(&v626), .v627=(&v627), .v628=(&v628), .v629=(&v629), .v630=(&v630), .v631=(&v631), .v632=(&v632), .v633=(&v633), .v634=(&v634), .v635=(&v635), .v636=(&v636), .v637=(&v637), .v638=(&v638), .v639=(&v639), .v640=(&v640), .v641=(&v641), .v642=(&v642), .v643=(&v643), .v644=(&v644), .v645=(&v645), .v646=(&v646), .v647=(&v647), .v648=(&v648), .v649=(&v649), .v650=(&v650), .v651=(&v651), .v652=(&v652), .v653=(&v653), .v654=(&v654), .v655=(&v655), .v656=(&v656), .v657=(&v657), .v658=(&v658), .v659=(&v659), .v660=(&v660), .v661=(&v661), .v662=(&v662), .v663=(&v663), .v664=(&v664), .v665=(&v665), .v666=(&v666), .v667=(&v667), .v668=(&v668), .v669=(&v669), .v670=(&v670), .v671=(&v671), .v672=(&v672), .v673=(&v673), .v674=(&v674), .v675=(&v675), .v676=(&v676), .v677=(&v677), .v678=(&v678), .v679=(&v679), .v680=(&v680), .v681=(&v681), .v682=(&v682), .v683=(&v683), .v684=(&v684), .v685=(&v685), .v686=(&v686), .v687=(&v687), .v688=(&v688), .v689=(&v689), .v690=(&v690), .v691=(&v691), .v692=(&v692), .v693=(&v693), .v694=(&v694), .v695=(&v695), .v696=(&v696), .v697=(&v697), .v698=(&v698), .v699=(&v699), .v700=(&v700), .v701=(&v701), .v702=(&v702), .v703=(&v703), .v704=(&v704), .v705=(&v705), .v706=(&v706), .v707=(&v707), .v708=(&v708), .v709=(&v709), .v710=(&v710), .v711=(&v711), .v712=(&v712), .v713=(&v713), .v714=(&v714), .v715=(&v715), .v716=(&v716), .v717=(&v717), .v718=(&v718), .v719=(&v719), .v720=(&v720), .v721=(&v721), .v722=(&v722), .v723=(&v723), .v724=(&v724), .v725=(&v725), .v726=(&v726), .v727=(&v727), .v728=(&v728), .v729=(&v729), .v730=(&v730), .v731=(&v731), .v732=(&v732), .v733=(&v733), .v734=(&v734), .v735=(&v735), .v736=(&v736), .v737=(&v737), .v738=(&v738), .v739=(&v739), .v740=(&v740), .v741=(&v741), .v742=(&v742), .v743=(&v743), .v744=(&v744), .v745=(&v745), .v746=(&v746), .v747=(&v747), .v748=(&v748), .v749=(&v749), .v750=(&v750), .v751=(&v751), .v752=(&v752), .v753=(&v753), .v754=(&v754), .v755=(&v755), .v756=(&v756), .v757=(&v757), .v758=(&v758), .v759=(&v759), .v760=(&v760), .v761=(&v761), .v762=(&v762), .v763=(&v763), .v764=(&v764), .v765=(&v765), .v766=(&v766), .v767=(&v767), .v768=(&v768), .v769=(&v769), .v770=(&v770), .v771=(&v771), .v772=(&v772), .v773=(&v773), .v774=(&v774), .v775=(&v775), .v776=(&v776), .v777=(&v777), .v778=(&v778), .v779=(&v779), .v780=(&v780), .v781=(&v781), .v782=(&v782), .v783=(&v783), .v784=(&v784), .v785=(&v785), .v786=(&v786), .v787=(&v787), .v788=(&v788), .v789=(&v789), .v790=(&v790), .v791=(&v791), .v792=(&v792), .v793=(&v793), .v794=(&v794), .v795=(&v795), .v796=(&v796), .v797=(&v797), .v798=(&v798), .v799=(&v799), .v800=(&v800), .v801=(&v801), .v802=(&v802), .v803=(&v803), .v804=(&v804), .v805=(&v805), .v806=(&v806), .v807=(&v807), .v808=(&v808), .v809=(&v809), .v810=(&v810), .v811=(&v811), .v812=(&v812), .v813=(&v813), .v814=(&v814), .v815=(&v815), .v816=(&v816), .v817=(&v817), .v818=(&v818), .v819=(&v819), .v820=(&v820), .v821=(&v821), .v822=(&v822), .v823=(&v823), .v824=(&v824), .v825=(&v825), .v826=(&v826), .v827=(&v827), .v828=(&v828), .v829=(&v829), .v830=(&v830), .v831=(&v831), .v832=(&v832), .v833=(&v833), .v834=(&v834), .v835=(&v835), .v836=(&v836), .v837=(&v837), .v838=(&v838), .v839=(&v839), .v840=(&v840), .v841=(&v841), .v842=(&v842), .v843=(&v843), .v844=(&v844), .v845=(&v845), .v846=(&v846), .v847=(&v847), .v848=(&v848), .v849=(&v849), .v850=(&v850), .v851=(&v851), .v852=(&v852), .v853=(&v853), .v854=(&v854), .v855=(&v855), .v856=(&v856), .v857=(&v857), .v858=(&v858), .v859=(&v859), .v860=(&v860), .v861=(&v861), .v862=(&v862), .v863=(&v863), .v864=(&v864), .v865=(&v865), .v866=(&v866), .v867=(&v867), .v868=(&v868), .v869=(&v869), .v870=(&v870), .v871=(&v871), .v872=(&v872), .v873=(&v873), .v874=(&v874), .v875=(&v875), .v876=(&v876), .v877=(&v877), .v878=(&v878), .v879=(&v879), .v880=(&v880), .v881=(&v881), .v882=(&v882), .v883=(&v883), .v884=(&v884), .v885=(&v885), .v886=(&v886), .v887=(&v887), .v888=(&v888), .v889=(&v889), .v890=(&v890), .v891=(&v891), .v892=(&v892), .v893=(&v893), .v894=(&v894), .v895=(&v895), .v896=(&v896), .v897=(&v897), .v898=(&v898), .v899=(&v899), .v900=(&v900), .v901=(&v901), .v902=(&v902), .v903=(&v903), .v904=(&v904), .v905=(&v905), .v906=(&v906), .v907=(&v907), .v908=(&v908), .v909=(&v909), .v910=(&v910), .v911=(&v911), .v912=(&v912), .v913=(&v913), .v914=(&v914), .v915=(&v915), .v916=(&v916), .v917=(&v917), .v918=(&v918), .v919=(&v919), .v920=(&v920), .v921=(&v921), .v922=(&v922), .v923=(&v923), .v924=(&v924), .v925=(&v925), .v926=(&v926), .v927=(&v927), .v928=(&v928), .v929=(&v929), .v930=(&v930), .v931=(&v931), .v932=(&v932), .v933=(&v933), .v934=(&v934), .v935=(&v935), .v936=(&v936), .v937=(&v937), .v938=(&v938), .v939=(&v939), .v940=(&v940), .v941=(&v941), .v942=(&v942), .v943=(&v943), .v944=(&v944), .v945=(&v945), .v946=(&v946), .v947=(&v947), .v948=(&v948), .v949=(&v949), .v950=(&v950), .v951=(&v951), .v952=(&v952), .v953=(&v953), .v954=(&v954), .v955=(&v955), .v956=(&v956), .v957=(&v957), .v958=(&v958), .v959=(&v959), .v960=(&v960), .v961=(&v961), .v962=(&v962), .v963=(&v963), .v964=(&v964), .v965=(&v965), .v966=(&v966), .v967=(&v967), .v968=(&v968), .v969=(&v969), .v970=(&v970), .v971=(&v971), .v972=(&v972), .v973=(&v973), .v974=(&v974), .v975=(&v975), .v976=(&v976), .v977=(&v977), .v978=(&v978), .v979=(&v979), .v980=(&v980), .v981=(&v981), .v982=(&v982), .v983=(&v983), .v984=(&v984), .v985=(&v985), .v986=(&v986), .v987=(&v987), .v988=(&v988), .v989=(&v989), .v990=(&v990), .v991=(&v991), .v992=(&v992), .v993=(&v993), .v994=(&v994), .v995=(&v995), .v996=(&v996), .v997=(&v997), .v998=(&v998), .v999=(&v999)};
   return foo(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/1538.wgsl.expected.ir.msl b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
index 78cff54..21deb74 100644
--- a/test/tint/bug/tint/1538.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
@@ -30,7 +30,7 @@
   return 0;
 }
 kernel void tint_symbol(device tint_array<uint, 1>* buf [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.buf=buf};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.buf=buf};
   {
     while(true) {
       if (((*tint_module_vars.buf)[0] == 0u)) {
diff --git a/test/tint/bug/tint/1542.wgsl.expected.ir.msl b/test/tint/bug/tint/1542.wgsl.expected.ir.msl
index 36b8b6b..d4955f9 100644
--- a/test/tint/bug/tint/1542.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1542.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
 };
 
 kernel void tint_symbol(const constant UniformBuffer* u_input [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u_input=u_input};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u_input=u_input};
   int3 const temp = ((*tint_module_vars.u_input).d << (uint3(0u) & uint3(31u)));
 }
diff --git a/test/tint/bug/tint/1557.wgsl.expected.ir.msl b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
index 34026b7..c775000 100644
--- a/test/tint/bug/tint/1557.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
@@ -21,7 +21,7 @@
   }
 }
 kernel void tint_symbol(const constant int* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
   switch((*tint_module_vars.u)) {
     case 0:
     {
diff --git a/test/tint/bug/tint/1604.wgsl.expected.ir.msl b/test/tint/bug/tint/1604.wgsl.expected.ir.msl
index 7f99c5f..c4066b5 100644
--- a/test/tint/bug/tint/1604.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1604.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void tint_symbol(const constant int* x [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.x=x};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.x=x};
   switch((*tint_module_vars.x)) {
     case 0:
     {
diff --git a/test/tint/bug/tint/1605.wgsl.expected.ir.msl b/test/tint/bug/tint/1605.wgsl.expected.ir.msl
index 6120df1..4379028 100644
--- a/test/tint/bug/tint/1605.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1605.wgsl.expected.ir.msl
@@ -29,6 +29,6 @@
   return false;
 }
 kernel void tint_symbol(const constant int* b [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.b=b};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.b=b};
   func_3(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/1666.wgsl.expected.ir.msl b/test/tint/bug/tint/1666.wgsl.expected.ir.msl
index 33fa57f..1899167 100644
--- a/test/tint/bug/tint/1666.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1666.wgsl.expected.ir.msl
@@ -34,7 +34,7 @@
   float const x = (*tint_module_vars.rarr)[idx];
 }
 kernel void f(const device tint_array<float, 1>* rarr [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.rarr=rarr};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.rarr=rarr};
   vector();
   tint_symbol();
   fixed_size_array();
diff --git a/test/tint/bug/tint/1677.wgsl.expected.ir.msl b/test/tint/bug/tint/1677.wgsl.expected.ir.msl
index 4b3e94e..fccf79f 100644
--- a/test/tint/bug/tint/1677.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1677.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
 };
 
 kernel void tint_symbol(uint3 id [[thread_position_in_grid]], const device Input* input [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.input=input};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.input=input};
   int3 const pos = ((*tint_module_vars.input).position - int3(0));
 }
diff --git a/test/tint/bug/tint/1735.wgsl.expected.ir.msl b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
index d4c9822..96c171e 100644
--- a/test/tint/bug/tint/1735.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
-  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.in=in, .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.in);
 }
diff --git a/test/tint/bug/tint/1776.spvasm.expected.ir.msl b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
index bb7ca68..c7eca93 100644
--- a/test/tint/bug/tint/1776.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
@@ -27,6 +27,6 @@
   S const x_18 = (*tint_module_vars.sb).inner[1];
 }
 kernel void tint_symbol(device sb_block* sb [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.sb=sb};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/1776.wgsl.expected.ir.msl b/test/tint/bug/tint/1776.wgsl.expected.ir.msl
index 81cfe35..75cf4be 100644
--- a/test/tint/bug/tint/1776.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1776.wgsl.expected.ir.msl
@@ -21,6 +21,6 @@
 };
 
 kernel void tint_symbol(const device tint_array<S, 1>* sb [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.sb=sb};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sb=sb};
   S const x = (*tint_module_vars.sb)[1];
 }
diff --git a/test/tint/bug/tint/1860.wgsl.expected.ir.msl b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
index 050d7bb..41b4900 100644
--- a/test/tint/bug/tint/1860.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
 };
 
 vertex float4 tint_symbol(const constant DeclaredAfterUsage* declared_after_usage [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.declared_after_usage=declared_after_usage};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.declared_after_usage=declared_after_usage};
   return float4((*tint_module_vars.declared_after_usage).f);
 }
diff --git a/test/tint/bug/tint/1875.wgsl.expected.ir.msl b/test/tint/bug/tint/1875.wgsl.expected.ir.msl
index dcb4d6e..4dd0806 100644
--- a/test/tint/bug/tint/1875.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1875.wgsl.expected.ir.msl
@@ -26,7 +26,7 @@
 }
 kernel void tint_symbol(device Outputs* outputs [[buffer(1)]]) {
   thread uint count = 0u;
-  tint_module_vars_struct const tint_module_vars = {.count=(&count), .outputs=outputs};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.count=(&count), .outputs=outputs};
   uint a = 0u;
   uint b = 10u;
   uint c = 4294967294u;
diff --git a/test/tint/bug/tint/2029.wgsl.expected.ir.msl b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
index c5abccc..b181a1e 100644
--- a/test/tint/bug/tint/2029.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void tint_symbol(device int3* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   (*tint_module_vars.s) = int3(1);
 }
diff --git a/test/tint/bug/tint/2038.wgsl.expected.ir.msl b/test/tint/bug/tint/2038.wgsl.expected.ir.msl
index d6e1651..27e3853 100644
--- a/test/tint/bug/tint/2038.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2038.wgsl.expected.ir.msl
@@ -17,7 +17,7 @@
 };
 
 kernel void tint_symbol(device tint_array<uint, 2>* output [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.output=output};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.output=output};
   if (false) {
     (*tint_module_vars.output)[0] = 1u;
   }
diff --git a/test/tint/bug/tint/2069.wgsl.expected.ir.msl b/test/tint/bug/tint/2069.wgsl.expected.ir.msl
index 55df230..e2819a2 100644
--- a/test/tint/bug/tint/2069.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2069.wgsl.expected.ir.msl
@@ -10,5 +10,5 @@
 
 kernel void tint_symbol() {
   thread modf_result_f32 v = modf_result_f32{.fract=0.0f, .whole=1.0f};
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
 }
diff --git a/test/tint/bug/tint/2100.wgsl.expected.ir.msl b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
index 7b04bc0..d41c21a 100644
--- a/test/tint/bug/tint/2100.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
 };
 
 vertex float4 tint_symbol_1(const constant S* tint_symbol [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.tint_symbol=tint_symbol};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_symbol=tint_symbol};
   float const x = (*tint_module_vars.tint_symbol).matrix_view[0][2u];
   return float4(x, 0.0f, 0.0f, 1.0f);
 }
diff --git a/test/tint/bug/tint/2175.wgsl.expected.ir.msl b/test/tint/bug/tint/2175.wgsl.expected.ir.msl
index 9fda4f9..d946e71 100644
--- a/test/tint/bug/tint/2175.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2175.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void tint_symbol_3(device uint* tint_symbol_2 [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.tint_symbol_2=tint_symbol_2};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_symbol_2=tint_symbol_2};
   (*tint_module_vars.tint_symbol_2) = 0u;
 }
diff --git a/test/tint/bug/tint/221.wgsl.expected.ir.msl b/test/tint/bug/tint/221.wgsl.expected.ir.msl
index 295f9e2..24bb006 100644
--- a/test/tint/bug/tint/221.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/221.wgsl.expected.ir.msl
@@ -25,7 +25,7 @@
   return (lhs - ((lhs / v) * v));
 }
 kernel void tint_symbol(device Buf* b [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.b=b};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.b=b};
   uint i = 0u;
   {
     while(true) {
diff --git a/test/tint/bug/tint/2237.wgsl.expected.ir.msl b/test/tint/bug/tint/2237.wgsl.expected.ir.msl
index 6e87f18..bf6afa5 100644
--- a/test/tint/bug/tint/2237.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2237.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
   return tint_array<uint, 4>{0u, 1u, 2u, 4u}[(*tint_module_vars.tint_symbol)];
 }
 kernel void tint_symbol_1(device uint* tint_symbol [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.tint_symbol=tint_symbol};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_symbol=tint_symbol};
   uint const v = tint_array<uint, 4>{0u, 1u, 2u, 4u}[(*tint_module_vars.tint_symbol)];
   (*tint_module_vars.tint_symbol) = (v + foo(tint_module_vars));
 }
diff --git a/test/tint/bug/tint/492.wgsl.expected.ir.msl b/test/tint/bug/tint/492.wgsl.expected.ir.msl
index 182a41a..6bffa09 100644
--- a/test/tint/bug/tint/492.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/492.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void tint_symbol(device S* buf [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.buf=buf};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.buf=buf};
   device int* const p = (&(*tint_module_vars.buf).a);
   (*p) = 12;
 }
diff --git a/test/tint/bug/tint/744.wgsl.expected.ir.msl b/test/tint/bug/tint/744.wgsl.expected.ir.msl
index bae927f..3358154 100644
--- a/test/tint/bug/tint/744.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.msl
@@ -28,7 +28,7 @@
 };
 
 kernel void tint_symbol(uint3 global_id [[thread_position_in_grid]], const device Matrix* firstMatrix [[buffer(0)]], const device Matrix* secondMatrix [[buffer(1)]], device Matrix* resultMatrix [[buffer(2)]], const constant Uniforms* uniforms [[buffer(3)]]) {
-  tint_module_vars_struct const tint_module_vars = {.firstMatrix=firstMatrix, .secondMatrix=secondMatrix, .resultMatrix=resultMatrix, .uniforms=uniforms};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.firstMatrix=firstMatrix, .secondMatrix=secondMatrix, .resultMatrix=resultMatrix, .uniforms=uniforms};
   uint2 const resultCell = uint2(global_id[1u], global_id[0u]);
   uint const dimInner = (*tint_module_vars.uniforms).aShape[1u];
   uint const dimOutter = (*tint_module_vars.uniforms).outShape[1u];
diff --git a/test/tint/bug/tint/870.spvasm.expected.ir.msl b/test/tint/bug/tint/870.spvasm.expected.ir.msl
index 5b030ea..23890b1 100644
--- a/test/tint/bug/tint/870.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/870.spvasm.expected.ir.msl
@@ -36,6 +36,6 @@
   orientation[5] = x_23[5u];
 }
 fragment void tint_symbol(const device x_B4_BuildInformation* sspp962805860buildInformation [[buffer(2)]]) {
-  tint_module_vars_struct const tint_module_vars = {.sspp962805860buildInformation=sspp962805860buildInformation};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.sspp962805860buildInformation=sspp962805860buildInformation};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/bug/tint/980.wgsl.expected.ir.msl b/test/tint/bug/tint/980.wgsl.expected.ir.msl
index cd2fbf9..6a4cb15 100644
--- a/test/tint/bug/tint/980.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/980.wgsl.expected.ir.msl
@@ -14,6 +14,6 @@
   return normalize(normal);
 }
 kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S* io [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.io=io};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.io=io};
   (*tint_module_vars.io).v = Bad((*tint_module_vars.io).i, (*tint_module_vars.io).v);
 }
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl
index 9fbd613..0f5de1b 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f16.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   half2 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
diff --git a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
index 4ad47b1..727c588 100644
--- a/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   float2 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
index e45d133..5055378 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   half3 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
index 90da387..6f2c302 100644
--- a/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   float3 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
index daa1907..e1df641 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   half3 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
index 19163b7..338a114 100644
--- a/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   float3 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
index cafdcab..07d146c 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   half4 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
diff --git a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
index 3f298d1..a33fa33 100644
--- a/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 };
 
 fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.data=data};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.data=data};
   float4 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl
index 4c68798..b551470 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half2x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl
index 5f14672..0a2621b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float2x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl
index 8a832b8..43f55dc 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl
index 5aa1a1e..9abb346 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl
index 8a832b8..43f55dc 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl
index 5aa1a1e..9abb346 100644
--- a/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl
index 4c68798..b551470 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half2x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl
index 5f14672..0a2621b 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float2x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 1dc41c0..7b8fa33 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl
index 8a832b8..43f55dc 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl
index 5aa1a1e..9abb346 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 1dc41c0..7b8fa33 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl
index 8a832b8..43f55dc 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl
index 5aa1a1e..9abb346 100644
--- a/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl
index cae3bd0..d12fbcb 100644
--- a/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half2x2 m = half2x2(half2(0.0h), half2(0.0h));
   (*tint_module_vars.out) = half2x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl
index b066f0b..dbb98ff 100644
--- a/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float2x2 m = float2x2(float2(0.0f), float2(0.0f));
   (*tint_module_vars.out) = float2x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl
index 7a0a8ca..0589cea 100644
--- a/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x2* out [[buffer(0)]]) {
   thread half2x2 m = half2x2(half2(0.0h), half2(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl
index 40054f8..66ab06c 100644
--- a/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x2/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x2* out [[buffer(0)]]) {
   thread float2x2 m = float2x2(float2(0.0f), float2(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl
index 37114d6..a1b5968 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half2x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl
index 3a8248f..25724c8 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float2x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl
index b741177..68d8060 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl
index c9a5358..09df06d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl
index b741177..68d8060 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl
index c9a5358..09df06d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl
index 37114d6..a1b5968 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half2x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl
index 3a8248f..25724c8 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float2x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index b104cd1..70a13f9 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl
index b741177..68d8060 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl
index c9a5358..09df06d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index b104cd1..70a13f9 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl
index b741177..68d8060 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl
index c9a5358..09df06d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
index 7f26f49..333a43d 100644
--- a/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half2x3 m = half2x3(half3(0.0h), half3(0.0h));
   tint_store_and_preserve_padding(tint_module_vars.out, half2x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
index 15b2b5e..094e834 100644
--- a/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
   (*target)[1u] = value_param[1u];
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float2x3 m = float2x3(float3(0.0f), float3(0.0f));
   tint_store_and_preserve_padding(tint_module_vars.out, float2x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
index 39b1128..ab22a84 100644
--- a/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device half2x3* out [[buffer(0)]]) {
   thread half2x3 m = half2x3(half3(0.0h), half3(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
index a3c5077..830dc56 100644
--- a/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
 }
 kernel void f(device float2x3* out [[buffer(0)]]) {
   thread float2x3 m = float2x3(float3(0.0f), float3(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl
index 3286eb6..b344578 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half2x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl
index dd86111..40a693f 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float2x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl
index 004898d..b528439 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl
index c698196..3a0253c 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl
index 004898d..b528439 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl
index c698196..3a0253c 100644
--- a/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl
index 3286eb6..b344578 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half2x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl
index dd86111..40a693f 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float2x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 3026fbe3..014dead 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl
index 004898d..b528439 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl
index c698196..3a0253c 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 3026fbe3..014dead 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl
index 004898d..b528439 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl
index c698196..3a0253c 100644
--- a/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl
index 5fe385a..cde27b3 100644
--- a/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half2x4 m = half2x4(half4(0.0h), half4(0.0h));
   (*tint_module_vars.out) = half2x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl
index 0e08d0b..ee7c544 100644
--- a/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float2x4 m = float2x4(float4(0.0f), float4(0.0f));
   (*tint_module_vars.out) = float2x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl
index fdcdee2..e3abd82 100644
--- a/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half2x4* out [[buffer(0)]]) {
   thread half2x4 m = half2x4(half4(0.0h), half4(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl
index 265d79c..08373d4 100644
--- a/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat2x4/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float2x4* out [[buffer(0)]]) {
   thread float2x4 m = float2x4(float4(0.0f), float4(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl
index 67fb019..188a450 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half3x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl
index 4faea37..df6c477 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float3x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl
index 521eca77..5a5503c 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl
index f8511bb..a57e84d 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl
index 521eca77..5a5503c 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl
index f8511bb..a57e84d 100644
--- a/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl
index 67fb019..188a450 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half3x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl
index 4faea37..df6c477 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float3x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index d3aa798..2ff4265 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl
index 521eca77..5a5503c 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl
index f8511bb..a57e84d 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index d3aa798..2ff4265 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl
index 521eca77..5a5503c 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl
index f8511bb..a57e84d 100644
--- a/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl
index 79eea62..1b7c309 100644
--- a/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half3x2 m = half3x2(half2(0.0h), half2(0.0h), half2(0.0h));
   (*tint_module_vars.out) = half3x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl
index e683848..7fe6b74 100644
--- a/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float3x2 m = float3x2(float2(0.0f), float2(0.0f), float2(0.0f));
   (*tint_module_vars.out) = float3x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl
index 1474c28..3dd8fc7 100644
--- a/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x2* out [[buffer(0)]]) {
   thread half3x2 m = half3x2(half2(0.0h), half2(0.0h), half2(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl
index 44c518f..2dccd8f 100644
--- a/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x2/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x2* out [[buffer(0)]]) {
   thread float3x2 m = float3x2(float2(0.0f), float2(0.0f), float2(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl
index 7a81f8b..fd83da2 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half3x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl
index d47de76..651d319 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float3x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl
index d54d574..10693eb 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl
index 63fddf5..10f1d7b 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl
index d54d574..10693eb 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl
index 63fddf5..10f1d7b 100644
--- a/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl
index 7a81f8b..fd83da2 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half3x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl
index d47de76..651d319 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float3x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 251e0b2..a18dc99 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -10,6 +10,6 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl
index d54d574..10693eb 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl
index 63fddf5..10f1d7b 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 251e0b2..a18dc99 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -10,6 +10,6 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl
index d54d574..10693eb 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl
index 63fddf5..10f1d7b 100644
--- a/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
index 7f80b18..7e216a8 100644
--- a/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half3x3 m = half3x3(half3(0.0h), half3(0.0h), half3(0.0h));
   tint_store_and_preserve_padding(tint_module_vars.out, half3x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl
index befce49..01ca5eb 100644
--- a/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/load/f32.wgsl.expected.ir.msl
@@ -10,7 +10,7 @@
   (*target)[2u] = value_param[2u];
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float3x3 m = float3x3(float3(0.0f), float3(0.0f), float3(0.0f));
   tint_store_and_preserve_padding(tint_module_vars.out, float3x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl
index 51e8405..54d4792 100644
--- a/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f16.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device half3x3* out [[buffer(0)]]) {
   thread half3x3 m = half3x3(half3(0.0h), half3(0.0h), half3(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
index 32ddcf3..c6c1564 100644
--- a/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void f(device float3x3* out [[buffer(0)]]) {
   thread float3x3 m = float3x3(float3(0.0f), float3(0.0f), float3(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl
index bc51772..d686eb4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half3x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl
index 76fae16..2d6063d 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float3x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl
index 3bc3c94..a11adf4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl
index 87e836e..3410a47 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl
index 3bc3c94..a11adf4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl
index 87e836e..3410a47 100644
--- a/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl
index bc51772..d686eb4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half3x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl
index 76fae16..2d6063d 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float3x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 3e2e29c..5ae677e 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl
index 3bc3c94..a11adf4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl
index 87e836e..3410a47 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 3e2e29c..5ae677e 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl
index 3bc3c94..a11adf4 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl
index 87e836e..3410a47 100644
--- a/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl
index 91ef6da..2326064 100644
--- a/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half3x4 m = half3x4(half4(0.0h), half4(0.0h), half4(0.0h));
   (*tint_module_vars.out) = half3x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl
index d7a1834..756d9b8 100644
--- a/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float3x4 m = float3x4(float4(0.0f), float4(0.0f), float4(0.0f));
   (*tint_module_vars.out) = float3x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl
index ce0e634..de8049b 100644
--- a/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half3x4* out [[buffer(0)]]) {
   thread half3x4 m = half3x4(half4(0.0h), half4(0.0h), half4(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl
index f87e279..b0c0436 100644
--- a/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat3x4/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float3x4* out [[buffer(0)]]) {
   thread float3x4 m = float3x4(float4(0.0f), float4(0.0f), float4(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl
index 682cf05..c545d09 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half4x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl
index 5fd8f2b..8552707 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float4x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl
index fe8aa1a..27d1778 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl
index 2beb638..a063ad5 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl
index fe8aa1a..27d1778 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl
index 2beb638..a063ad5 100644
--- a/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl
index 682cf05..c545d09 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half4x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl
index 5fd8f2b..8552707 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float4x2((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 4213fd0..be1b004 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl
index fe8aa1a..27d1778 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl
index 2beb638..a063ad5 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 4213fd0..be1b004 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl
index fe8aa1a..27d1778 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl
index 2beb638..a063ad5 100644
--- a/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl
index f9b6e38..56d34ec 100644
--- a/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half4x2 m = half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h));
   (*tint_module_vars.out) = half4x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl
index 4232333..be15bfd 100644
--- a/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float4x2 m = float4x2(float2(0.0f), float2(0.0f), float2(0.0f), float2(0.0f));
   (*tint_module_vars.out) = float4x2(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl
index 9004e83..25a419c 100644
--- a/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x2* out [[buffer(0)]]) {
   thread half4x2 m = half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl
index fab4f75..9d9f824 100644
--- a/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x2/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x2* out [[buffer(0)]]) {
   thread float4x2 m = float4x2(float2(0.0f), float2(0.0f), float2(0.0f), float2(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl
index 7f337f7..ce94fdc 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half4x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl
index ddbce20..a6e6823 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/identity/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float4x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl
index 93e1d80..42f62c5 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl
index 113532e..0ce5be1 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl
index 93e1d80..42f62c5 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl
index 113532e..0ce5be1 100644
--- a/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl
index 7f337f7..ce94fdc 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, half4x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl
index ddbce20..a6e6823 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/identity/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float4x3((*tint_module_vars.m)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index a659c88..1ab6c0d 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl
index 93e1d80..42f62c5 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl
index 113532e..0ce5be1 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index a659c88..1ab6c0d 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f)));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl
index 93e1d80..42f62c5 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl
index 113532e..0ce5be1 100644
--- a/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
index a781ea3..cb2dffd 100644
--- a/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half4x3 m = half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h));
   tint_store_and_preserve_padding(tint_module_vars.out, half4x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl
index 8c4aef5..ff67e14 100644
--- a/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/load/f32.wgsl.expected.ir.msl
@@ -11,7 +11,7 @@
   (*target)[3u] = value_param[3u];
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float4x3 m = float4x3(float3(0.0f), float3(0.0f), float3(0.0f), float3(0.0f));
   tint_store_and_preserve_padding(tint_module_vars.out, float4x3(m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl
index 7ba6fe0..066c940 100644
--- a/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f16.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device half4x3* out [[buffer(0)]]) {
   thread half4x3 m = half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
index fd2382b..6053880 100644
--- a/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void f(device float4x3* out [[buffer(0)]]) {
   thread float4x3 m = float4x3(float3(0.0f), float3(0.0f), float3(0.0f), float3(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl
index 5366300..fb2e74c 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half4x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl
index fa069a1..10fa6b1 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float4x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl
index 1c7f1e0..2de37c9 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl
index 7b8a342..843bb49 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl
index 1c7f1e0..2de37c9 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl
index 7b8a342..843bb49 100644
--- a/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl
index 5366300..fb2e74c 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = half4x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl
index fa069a1..10fa6b1 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/identity/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = float4x4((*tint_module_vars.m));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
index 80649b5..544c5cf 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl
index 1c7f1e0..2de37c9 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl
index 7b8a342..843bb49 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
index 80649b5..544c5cf 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/abstract-float.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl
index 1c7f1e0..2de37c9 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl
index 7b8a342..843bb49 100644
--- a/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl
index 7f0df97..3efbaab 100644
--- a/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f16.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   half4x4 m = half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h));
   (*tint_module_vars.out) = half4x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl
index 5e621d2..f11658c 100644
--- a/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/load/f32.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   float4x4 m = float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f));
   (*tint_module_vars.out) = float4x4(m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl
index 546cb14..d03c14f 100644
--- a/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f16.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device half4x4* out [[buffer(0)]]) {
   thread half4x4 m = half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl
index 6c53af1..6d858ea 100644
--- a/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/mat4x4/zero/f32.wgsl.expected.ir.msl
@@ -7,6 +7,6 @@
 
 kernel void f(device float4x4* out [[buffer(0)]]) {
   thread float4x4 m = float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f));
-  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.m=(&m), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.m);
 }
diff --git a/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
index 72701cb..e13b334 100644
--- a/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int c = 0;
   int d = 0;
   (*tint_module_vars.s) = (c + d);
diff --git a/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
index b4da174..b80529e 100644
--- a/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   (*tint_module_vars.s) = 3;
 }
diff --git a/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
index 4a1d8ab..a73f1bc 100644
--- a/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int const a = 1;
   int const a__ = a;
   int const b = a;
diff --git a/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
index 58219fa..1f600df 100644
--- a/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
   (*tint_module_vars.s) = b;
 }
 kernel void tint_symbol(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   f(1, tint_module_vars);
 }
diff --git a/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
index 13991e1..3675336 100644
--- a/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   a__ const c = a__{};
   int const d = c.b__;
   (*tint_module_vars.s) = (c.b__ + d);
diff --git a/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
index eec150f..34c0b83 100644
--- a/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
 kernel void f(device int* s [[buffer(0)]]) {
   thread int a = 1;
   thread int a__ = 2;
-  tint_module_vars_struct const tint_module_vars = {.s=s, .a=(&a), .a__=(&a__)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s, .a=(&a), .a__=(&a__)};
   int b = (*tint_module_vars.a);
   int b__ = (*tint_module_vars.a__);
   (*tint_module_vars.s) = (b + b__);
diff --git a/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
index 72701cb..e13b334 100644
--- a/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int c = 0;
   int d = 0;
   (*tint_module_vars.s) = (c + d);
diff --git a/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
index b4da174..b80529e 100644
--- a/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   (*tint_module_vars.s) = 3;
 }
diff --git a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
index 79209c7..ad9ecc5 100644
--- a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int const a = 1;
   int const _a = a;
   int const b = a;
diff --git a/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
index 0c594d0..2efe5aec 100644
--- a/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
   (*tint_module_vars.s) = b;
 }
 kernel void tint_symbol(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   f(1, tint_module_vars);
 }
diff --git a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
index b2a502f..434ad25 100644
--- a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   _a const c = _a{};
   int const d = c._b;
   (*tint_module_vars.s) = (c._b + d);
diff --git a/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
index 001f6c4..b8f38ec 100644
--- a/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
 kernel void f(device int* s [[buffer(0)]]) {
   thread int a = 1;
   thread int _a = 2;
-  tint_module_vars_struct const tint_module_vars = {.s=s, .a=(&a), ._a=(&_a)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s, .a=(&a), ._a=(&_a)};
   int b = (*tint_module_vars.a);
   int _b = (*tint_module_vars._a);
   (*tint_module_vars.s) = (b + _b);
diff --git a/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
index 72701cb..e13b334 100644
--- a/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int c = 0;
   int d = 0;
   (*tint_module_vars.s) = (c + d);
diff --git a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
index ba974b4..2a88a4c 100644
--- a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
@@ -5,7 +5,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   int const A = 1;
   int const _A = 2;
   int const B = A;
diff --git a/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
index 6553670..8ff069f 100644
--- a/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
   (*tint_module_vars.s) = B;
 }
 kernel void tint_symbol(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   f(1, tint_module_vars);
 }
diff --git a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
index 978dc46..59addf9 100644
--- a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void f(device int* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
   _A const c = _A{};
   int const d = c._B;
   (*tint_module_vars.s) = (c._B + d);
diff --git a/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
index 3bf815f..0dae34c 100644
--- a/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
@@ -9,7 +9,7 @@
 kernel void f(device int* s [[buffer(0)]]) {
   thread int A = 1;
   thread int _A = 2;
-  tint_module_vars_struct const tint_module_vars = {.s=s, .A=(&A), ._A=(&_A)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s, .A=(&A), ._A=(&_A)};
   int B = (*tint_module_vars.A);
   int _B = (*tint_module_vars._A);
   (*tint_module_vars.s) = (B + _B);
diff --git a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
index 83f2ad3..018df46 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void f(device SSBO* ssbo [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.ssbo=ssbo};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.ssbo=ssbo};
   float2x2 const v = (*tint_module_vars.ssbo).m;
   (*tint_module_vars.ssbo).m = v;
 }
diff --git a/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
index ae31a83..aa933c6 100644
--- a/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
+++ b/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
@@ -18,6 +18,6 @@
 
 fragment void f() {
   thread tint_array<int, 4> A = {};
-  tint_module_vars_struct const tint_module_vars = {.A=(&A)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.A=(&A)};
   (*tint_module_vars.A)[0] = 1;
 }
diff --git a/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl
index ff62074..b3f3d84 100644
--- a/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl
+++ b/test/tint/out_of_order_decls/array/struct.wgsl.expected.ir.msl
@@ -21,6 +21,6 @@
 
 fragment void f() {
   thread tint_array<S, 4> A = {};
-  tint_module_vars_struct const tint_module_vars = {.A=(&A)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.A=(&A)};
   (*tint_module_vars.A)[0] = S{.m=1};
 }
diff --git a/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
index 7f63f6a..71610a4 100644
--- a/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
+++ b/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
@@ -6,6 +6,6 @@
 
 fragment void f() {
   thread int a = 1;
-  tint_module_vars_struct const tint_module_vars = {.a=(&a)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=(&a)};
   int const b = (*tint_module_vars.a);
 }
diff --git a/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
index a93fc0f..4fcfd30 100644
--- a/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread int I = 0;
-  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.I=(&I)};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
index 80853a1..34264e5 100644
--- a/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 
 kernel void tint_symbol() {
   thread int I = 0;
-  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.I=(&I)};
   int const i = (*tint_module_vars.I);
   int const u = (i + 1);
 }
diff --git a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl
index 5335a0a..beb3865 100644
--- a/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/struct_field.spvasm.expected.ir.msl
@@ -13,6 +13,6 @@
 }
 kernel void tint_symbol() {
   thread S V = {};
-  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.V=(&V)};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl
index 07b75d3..35bf230 100644
--- a/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/struct_field.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 
 kernel void tint_symbol() {
   thread S V = {};
-  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.V=(&V)};
   int const i = (*tint_module_vars.V).i;
 }
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
index e5c9cac..abfb0b9 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 
 kernel void tint_symbol() {
   thread int i = 123;
-  tint_module_vars_struct const tint_module_vars = {.i=(&i)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.i=(&i)};
   thread int* const p = tint_module_vars.i;
   int const u = ((*p) + 1);
 }
diff --git a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl
index 965bab3..188cec7 100644
--- a/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/local/ptr_storage.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void tint_symbol(device S* v [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.v=v};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=v};
   device int* const p = (&(*tint_module_vars.v).a);
   int const u = ((*p) + 1);
 }
diff --git a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
index 281ed39..2e61682 100644
--- a/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 };
 
 kernel void tint_symbol(const constant S* v [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.v=v};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=v};
   const constant int* const p = (&(*tint_module_vars.v).a);
   int const u = ((*p) + 1);
 }
diff --git a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl
index 298deac..dc6a25c 100644
--- a/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/array_in_struct.wgsl.expected.ir.msl
@@ -24,6 +24,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   tint_array<int, 4> const r = func((&(*tint_module_vars.P).arr));
 }
diff --git a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl
index 4030324..512b573 100644
--- a/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/i32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread int P = 0;
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   int const r = func(tint_module_vars.P);
 }
diff --git a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl
index c68a38e..5bde080 100644
--- a/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/i32_in_struct.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   int const r = func((&(*tint_module_vars.P).i));
 }
diff --git a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl
index 39f93db..3494864 100644
--- a/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/struct_in_array.wgsl.expected.ir.msl
@@ -24,6 +24,6 @@
 }
 kernel void tint_symbol() {
   thread tint_array<str, 4> P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   str const r = func((&(*tint_module_vars.P)[2]));
 }
diff --git a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
index 4ebd764..7b3a5ce 100644
--- a/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float2x2 P = float2x2(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   float2 const r = func((&(*tint_module_vars.P)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl
index aec9649..a99e27f 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float4 P = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   float4 const r = func(tint_module_vars.P);
 }
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index 676b6ec..8299cfd 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float2x4 P = float2x4(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   float4 const r = func((&(*tint_module_vars.P)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
index 19ff6e7..ac09cdb 100644
--- a/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   float4 const r = func((&(*tint_module_vars.P).i));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl
index 4cb3626..ad5e614 100644
--- a/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/array_in_struct.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   tint_array<int, 4> const r = func((&(*tint_module_vars.S).arr));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
index 3441b21..fd98d38 100644
--- a/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device int* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   int const r = func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
index 161ea8ec..db5eec3 100644
--- a/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   int const r = func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl
index 48224ae..73d2eee 100644
--- a/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/struct_in_array.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device tint_array<str, 4>* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   str const r = func((&(*tint_module_vars.S)[2]));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
index 053c395..75003d4 100644
--- a/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device float2x2* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float2 const r = func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl
index 73a59a6..be37ff1 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device float4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index b81ae3b..04c3a86 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device float2x4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
index 924b036..b4edaab 100644
--- a/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl
index b70d640..2d07f66 100644
--- a/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/array_in_struct.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   tint_array<int4, 4> const r = func((&(*tint_module_vars.S).arr));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
index 3960789..f1c8f99 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant int* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   int const r = func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
index 8401c5a..124ac1d 100644
--- a/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   int const r = func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl
index ae82463..7cc2678 100644
--- a/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/struct_in_array.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant tint_array<str, 4>* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   str const r = func((&(*tint_module_vars.S)[2]));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
index bfa4dcf..7fbb3c1 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant float2x2* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float2 const r = func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl
index e720076..d5f49e9 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant float4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index 91233de..542c4a6 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant float2x4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl
index 62f4c4e..b6b3e0f 100644
--- a/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   return (*pointer);
 }
 kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   float4 const r = func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
index add96d4..c36daad 100644
--- a/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
@@ -10,6 +10,6 @@
 }
 kernel void tint_symbol() {
   thread int I = 0;
-  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.I=(&I)};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
index b1b1710..dd7cc0f 100644
--- a/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 
 kernel void tint_symbol() {
   thread int I = 0;
-  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.I=(&I)};
   (*tint_module_vars.I) = 123;
   (*tint_module_vars.I) = 123;
 }
diff --git a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl
index cff29e8..694e0ad 100644
--- a/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/store/global/struct_field.spvasm.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void tint_symbol() {
   thread S V = {};
-  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.V=(&V)};
   main_1(tint_module_vars);
 }
diff --git a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl
index 9e8c420..9550573 100644
--- a/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/array_in_struct.wgsl.expected.ir.msl
@@ -24,6 +24,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P).arr));
 }
diff --git a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl
index ec44ab2..5c890a8 100644
--- a/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/i32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread int P = 0;
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func(tint_module_vars.P);
 }
diff --git a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl
index a1df1d8..75bd9cd 100644
--- a/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/i32_in_struct.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P).i));
 }
diff --git a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl
index 3472ccb..84c3697 100644
--- a/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/struct_in_array.wgsl.expected.ir.msl
@@ -24,6 +24,6 @@
 }
 kernel void tint_symbol() {
   thread tint_array<str, 4> P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P)[2]));
 }
diff --git a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
index eebd3ba..bce7d83 100644
--- a/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float2x2 P = float2x2(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P)[1]));
 }
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl
index 2c270c6..e407ad6 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float4 P = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func(tint_module_vars.P);
 }
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index e9223b4..00aeeeb 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -9,6 +9,6 @@
 }
 kernel void tint_symbol() {
   thread float2x4 P = float2x4(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P)[1]));
 }
diff --git a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
index 3428f6d..e79258b 100644
--- a/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/private/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -12,6 +12,6 @@
 }
 kernel void tint_symbol() {
   thread str P = {};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P)};
   func((&(*tint_module_vars.P).i));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl
index 910c21d..fc20572 100644
--- a/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/array_in_struct.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   (*pointer) = tint_array<int, 4>{};
 }
 kernel void tint_symbol(device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S).arr));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl
index 7dde63a..faa836a 100644
--- a/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/i32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   (*pointer) = 42;
 }
 kernel void tint_symbol(device int* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl
index 2de93aa..b19fb13 100644
--- a/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/i32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*pointer) = 42;
 }
 kernel void tint_symbol(device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl
index 752fa8b..854b66b 100644
--- a/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/struct_in_array.wgsl.expected.ir.msl
@@ -23,6 +23,6 @@
   (*pointer) = str{};
 }
 kernel void tint_symbol(device tint_array<str, 4>* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S)[2]));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
index 53d54f1..e626388 100644
--- a/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/vec2_f32_in_mat2x2.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   (*pointer) = float2(0.0f);
 }
 kernel void tint_symbol(device float2x2* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl
index a0155aa..41bd9ce 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol(device float4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func(tint_module_vars.S);
 }
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index b5e1c91..e0c9b7e 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
   (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol(device float2x4* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S)[1]));
 }
diff --git a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
index bb3ec34..5e0a114 100644
--- a/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/storage/vec4_f32_in_struct.wgsl.expected.ir.msl
@@ -11,6 +11,6 @@
   (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol(device str* S [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.S=S};
   func((&(*tint_module_vars.S).i));
 }
diff --git a/test/tint/samples/simple_vertex.spvasm.expected.ir.msl b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
index 65eb95d..0e97294 100644
--- a/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
+++ b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
@@ -12,7 +12,7 @@
 }
 vertex main_out tint_symbol() {
   thread float4 gl_Position = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.gl_Position=(&gl_Position)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.gl_Position=(&gl_Position)};
   main_1(tint_module_vars);
-  return {.gl_Position=(*tint_module_vars.gl_Position)};
+  return main_out{.gl_Position=(*tint_module_vars.gl_Position)};
 }
diff --git a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl
index ff2a143..fed0746 100644
--- a/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl
+++ b/test/tint/statements/assign/phony/addr_of_runtime_array.wgsl.expected.ir.msl
@@ -20,5 +20,5 @@
 };
 
 kernel void tint_symbol(device S* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
 }
diff --git a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl
index 5800906..3ecc8ed 100644
--- a/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl
+++ b/test/tint/statements/assign/phony/storage_buffer.wgsl.expected.ir.msl
@@ -8,5 +8,5 @@
 };
 
 kernel void tint_symbol(device S* s [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.s=s};
 }
diff --git a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl
index fbb60dd..5b84f15 100644
--- a/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl
+++ b/test/tint/statements/assign/phony/uniform_buffer.wgsl.expected.ir.msl
@@ -8,5 +8,5 @@
 };
 
 kernel void tint_symbol(const constant S* u [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.u=u};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.u=u};
 }
diff --git a/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
index 80d7ee1..cc3b5c2 100644
--- a/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
@@ -19,7 +19,7 @@
 }
 fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
   foo(tint_module_vars);
   bar(tint_module_vars);
   if (!((*tint_module_vars.continue_execution))) {
diff --git a/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
index 30ff5e9..22fc778 100644
--- a/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 
 fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
   if (((*tint_module_vars.non_uniform_global) < 0)) {
     (*tint_module_vars.continue_execution) = false;
   }
diff --git a/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl b/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
index 6659eeb..f82b619 100644
--- a/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
@@ -7,7 +7,7 @@
 
 fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]]) {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.non_uniform_global=non_uniform_global, .continue_execution=(&continue_execution)};
   if (((*tint_module_vars.non_uniform_global) < 0)) {
     (*tint_module_vars.continue_execution) = false;
   }
diff --git a/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl b/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
index 4437f6f..7496b76 100644
--- a/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
@@ -8,7 +8,7 @@
 
 fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
   thread bool continue_execution = true;
-  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
   if (((*tint_module_vars.non_uniform_global) < 0)) {
     (*tint_module_vars.continue_execution) = false;
   }
diff --git a/test/tint/struct/type_initializer.wgsl.expected.ir.msl b/test/tint/struct/type_initializer.wgsl.expected.ir.msl
index 5ceced0..54471c4 100644
--- a/test/tint/struct/type_initializer.wgsl.expected.ir.msl
+++ b/test/tint/struct/type_initializer.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S1 {
@@ -37,39 +35,18 @@
   int const x = 42;
   S1 const empty = S1{};
   S1 const nonempty = S1{.a=1, .b=2, .c=3, .d=4};
-  S1 const nonempty_with_expr = {.a=1, .b=x, .c=(x + 1), .d=nonempty.d};
+  S1 const nonempty_with_expr = S1{.a=1, .b=x, .c=(x + 1), .d=nonempty.d};
   S3 const nested_empty = S3{};
   S3 const nested_nonempty = S3{.g=1, .h=S1{.a=2, .b=3, .c=4, .d=5}, .i=S2{.e=6, .f=S1{.a=7, .b=8, .c=9, .d=10}}};
-  S1 const v = {.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d};
-  S3 const nested_nonempty_with_expr = {.g=1, .h=v, .i={.e=6, .f=nonempty}};
+  S1 const v = S1{.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d};
+  S3 const nested_nonempty_with_expr = S3{.g=1, .h=v, .i=S2{.e=6, .f=nonempty}};
   int const subexpr_empty = 0;
   int const subexpr_nonempty = 2;
-  int const subexpr_nonempty_with_expr = {.a=1, .b=x, .c=(x + 1), .d=nonempty.d}.c;
+  int const subexpr_nonempty_with_expr = S1{.a=1, .b=x, .c=(x + 1), .d=nonempty.d}.c;
   S1 const subexpr_nested_empty = S1{};
   S1 const subexpr_nested_nonempty = S1{.a=2, .b=3, .c=4, .d=5};
-  S1 const subexpr_nested_nonempty_with_expr = {.e=1, .f={.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d}}.f;
+  S1 const subexpr_nested_nonempty_with_expr = S2{.e=1, .f=S1{.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d}}.f;
   tint_array<T, 2> const aosoa_empty = tint_array<T, 2>{};
   tint_array<T, 2> const aosoa_nonempty = tint_array<T, 2>{T{.a=tint_array<int, 2>{1, 2}}, T{.a=tint_array<int, 2>{3, 4}}};
-  tint_array<T, 2> const aosoa_nonempty_with_expr = tint_array<T, 2>{{.a=tint_array<int, 2>{1, (aosoa_nonempty[0].a[0] + 1)}}, aosoa_nonempty[1]};
+  tint_array<T, 2> const aosoa_nonempty_with_expr = tint_array<T, 2>{T{.a=tint_array<int, 2>{1, (aosoa_nonempty[0].a[0] + 1)}}, aosoa_nonempty[1]};
 }
-program_source:45:13: error: excess elements in scalar initializer
-  int const subexpr_nonempty_with_expr = {.a=1, .b=x, .c=(x + 1), .d=nonempty.d}.c;
-            ^                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-program_source:45:81: error: expected ';' at end of declaration
-  int const subexpr_nonempty_with_expr = {.a=1, .b=x, .c=(x + 1), .d=nonempty.d}.c;
-                                                                                ^
-                                                                                ;
-program_source:48:50: error: field designator 'e' does not refer to any field in type 'const S1'
-  S1 const subexpr_nested_nonempty_with_expr = {.e=1, .f={.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d}}.f;
-                                                 ^
-program_source:48:56: error: field designator 'f' does not refer to any field in type 'const S1'
-  S1 const subexpr_nested_nonempty_with_expr = {.e=1, .f={.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d}}.f;
-                                                       ^
-program_source:48:109: error: expected ';' at end of declaration
-  S1 const subexpr_nested_nonempty_with_expr = {.e=1, .f={.a=2, .b=x, .c=(x + 1), .d=nested_nonempty.i.f.d}}.f;
-                                                                                                            ^
-                                                                                                            ;
-program_source:51:71: error: field designator cannot initialize a non-class type 'T[2]'
-  tint_array<T, 2> const aosoa_nonempty_with_expr = tint_array<T, 2>{{.a=tint_array<int, 2>{1, (aosoa_nonempty[0].a[0] + 1)}}, aosoa_nonempty[1]};
-                                                                      ^
-
diff --git a/test/tint/types/buffers/storage.wgsl.expected.ir.msl b/test/tint/types/buffers/storage.wgsl.expected.ir.msl
index 961dc23..a6cd1f5 100644
--- a/test/tint/types/buffers/storage.wgsl.expected.ir.msl
+++ b/test/tint/types/buffers/storage.wgsl.expected.ir.msl
@@ -17,6 +17,6 @@
 };
 
 fragment void tint_symbol(const device tint_array<float, 1>* weights [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.weights=weights};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.weights=weights};
   float a = (*tint_module_vars.weights)[0];
 }
diff --git a/test/tint/types/buffers/uniform.wgsl.expected.ir.msl b/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
index 8587b5a..0728c96 100644
--- a/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
+++ b/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 fragment void tint_symbol(const constant float2* weights [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.weights=weights};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.weights=weights};
   float a = (*tint_module_vars.weights)[0];
 }
diff --git a/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl b/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
index 127fbd6..d7c0ccf 100644
--- a/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
@@ -8,6 +8,6 @@
 kernel void tint_symbol() {
   thread float a = 1.0f;
   thread float b = 0.0f;
-  tint_module_vars_struct const tint_module_vars = {.a=(&a), .b=(&b)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=(&a), .b=(&b)};
   float const x = ((*tint_module_vars.a) + (*tint_module_vars.b));
 }
diff --git a/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl b/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
index 0daa2b2..388d8c4 100644
--- a/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
@@ -44,7 +44,7 @@
   thread uint3 v3u32_var3 = uint3(1u);
   thread bool3 v3bool_var4 = bool3(true);
   thread bool4 v4bool_var5 = bool4(true, false, true, false);
-  tint_module_vars_struct const tint_module_vars = {.bool_var1=(&bool_var1), .bool_var2=(&bool_var2), .bool_var3=(&bool_var3), .i32_var1=(&i32_var1), .i32_var2=(&i32_var2), .i32_var3=(&i32_var3), .u32_var1=(&u32_var1), .u32_var2=(&u32_var2), .u32_var3=(&u32_var3), .v3bool_var1=(&v3bool_var1), .v3bool_var2=(&v3bool_var2), .v3bool_var3=(&v3bool_var3), .v3i32_var1=(&v3i32_var1), .v3i32_var2=(&v3i32_var2), .v3i32_var3=(&v3i32_var3), .v3u32_var1=(&v3u32_var1), .v3u32_var2=(&v3u32_var2), .v3u32_var3=(&v3u32_var3), .v3bool_var4=(&v3bool_var4), .v4bool_var5=(&v4bool_var5)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.bool_var1=(&bool_var1), .bool_var2=(&bool_var2), .bool_var3=(&bool_var3), .i32_var1=(&i32_var1), .i32_var2=(&i32_var2), .i32_var3=(&i32_var3), .u32_var1=(&u32_var1), .u32_var2=(&u32_var2), .u32_var3=(&u32_var3), .v3bool_var1=(&v3bool_var1), .v3bool_var2=(&v3bool_var2), .v3bool_var3=(&v3bool_var3), .v3i32_var1=(&v3i32_var1), .v3i32_var2=(&v3i32_var2), .v3i32_var3=(&v3i32_var3), .v3u32_var1=(&v3u32_var1), .v3u32_var2=(&v3u32_var2), .v3u32_var3=(&v3u32_var3), .v3bool_var4=(&v3bool_var4), .v4bool_var5=(&v4bool_var5)};
   (*tint_module_vars.bool_var1) = false;
   (*tint_module_vars.bool_var2) = false;
   (*tint_module_vars.bool_var3) = false;
diff --git a/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl b/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
index e6954bb..51b54a4 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
@@ -39,7 +39,7 @@
   thread float2x3 m2x3_var = float2x3(float3(0.0f), float3(0.0f));
   thread tint_array<float, 4> arr_var = tint_array<float, 4>{};
   thread S struct_var = S{};
-  tint_module_vars_struct const tint_module_vars = {.bool_var=(&bool_var), .i32_var=(&i32_var), .u32_var=(&u32_var), .f32_var=(&f32_var), .v2i32_var=(&v2i32_var), .v3u32_var=(&v3u32_var), .v4f32_var=(&v4f32_var), .m2x3_var=(&m2x3_var), .arr_var=(&arr_var), .struct_var=(&struct_var)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.bool_var=(&bool_var), .i32_var=(&i32_var), .u32_var=(&u32_var), .f32_var=(&f32_var), .v2i32_var=(&v2i32_var), .v3u32_var=(&v3u32_var), .v4f32_var=(&v4f32_var), .m2x3_var=(&m2x3_var), .arr_var=(&arr_var), .struct_var=(&struct_var)};
   (*tint_module_vars.bool_var) = false;
   (*tint_module_vars.i32_var) = 0;
   (*tint_module_vars.u32_var) = 0u;
diff --git a/test/tint/var/inferred/global.wgsl.expected.ir.msl b/test/tint/var/inferred/global.wgsl.expected.ir.msl
index 95b79fc..c18730f 100644
--- a/test/tint/var/inferred/global.wgsl.expected.ir.msl
+++ b/test/tint/var/inferred/global.wgsl.expected.ir.msl
@@ -51,7 +51,7 @@
   thread tint_array<float, 10> v14 = tint_array<float, 10>{};
   thread int3 v15 = int3(1, 2, 3);
   thread float3 v16 = float3(1.0f, 2.0f, 3.0f);
-  tint_module_vars_struct const tint_module_vars = {.v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16)};
   int const l1 = (*tint_module_vars.v1);
   uint const l2 = (*tint_module_vars.v2);
   float const l3 = (*tint_module_vars.v3);
diff --git a/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl b/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
index 4c4cde8..df7301d 100644
--- a/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
@@ -17,6 +17,6 @@
   return s3.s2.s1.i;
 }
 kernel void tint_symbol(device int* out [[buffer(0)]]) {
-  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.out=out};
   (*tint_module_vars.out) = f(S3{.s2=S2{.s1=S1{.i=42}}});
 }
diff --git a/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl b/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
index 54ddf72..f402b99 100644
--- a/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 kernel void tint_symbol() {
   thread tint_array<tint_array<int, 3>, 2> zero = {};
   thread tint_array<tint_array<int, 3>, 2> init = tint_array<tint_array<int, 3>, 2>{tint_array<int, 3>{1, 2, 3}, tint_array<int, 3>{4, 5, 6}};
-  tint_module_vars_struct const tint_module_vars = {.zero=(&zero), .init=(&init)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.zero=(&zero), .init=(&init)};
   tint_array<tint_array<int, 3>, 2> v0 = (*tint_module_vars.zero);
   tint_array<tint_array<int, 3>, 2> v1 = (*tint_module_vars.init);
 }
diff --git a/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl b/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
index 0d212a7..0a1e301 100644
--- a/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
@@ -20,7 +20,7 @@
 kernel void tint_symbol() {
   thread tint_array<int, 3> zero = {};
   thread tint_array<int, 3> init = tint_array<int, 3>{1, 2, 3};
-  tint_module_vars_struct const tint_module_vars = {.zero=(&zero), .init=(&init)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.zero=(&zero), .init=(&init)};
   tint_array<int, 3> v0 = (*tint_module_vars.zero);
   tint_array<int, 3> v1 = (*tint_module_vars.init);
 }
diff --git a/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl b/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
index bd69c3c..2bc17f2 100644
--- a/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
@@ -6,5 +6,5 @@
 
 kernel void tint_symbol() {
   thread float2x3 v = float2x3(0.0f);
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl b/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
index 7e74110..f8ac05b 100644
--- a/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
@@ -16,6 +16,6 @@
 
 kernel void tint_symbol(device int* out [[buffer(0)]]) {
   thread S3 P = S3{.s2=S2{.s1=S1{.i=42}}};
-  tint_module_vars_struct const tint_module_vars = {.P=(&P), .out=out};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.P=(&P), .out=out};
   (*tint_module_vars.out) = (*tint_module_vars.P).s2.s1.i;
 }
diff --git a/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl b/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
index 66e321b..b23b0cf 100644
--- a/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
@@ -6,5 +6,5 @@
 
 kernel void tint_symbol() {
   thread int v = 0;
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl b/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
index 55b3453..436d678 100644
--- a/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
@@ -10,5 +10,5 @@
 
 kernel void tint_symbol() {
   thread S v = {};
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl b/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
index 31ca65f..fb95607 100644
--- a/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
@@ -6,5 +6,5 @@
 
 kernel void tint_symbol() {
   thread int3 v = 0;
-  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.v=(&v)};
 }