glsl: Always emit structures

Skipping those that are block-decorated is not correct, as
block-decorated structures can also have non-buffer usages. This is
even clearer now that WGSL has removed the block attribute.

Bug: tint:1324
Change-Id: I6484766a5c541d39e2dc08beb3ae7b889759a3fb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/72083
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 3e7185a..c021420 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -123,10 +123,8 @@
         return false;
       }
     } else if (auto* str = decl->As<ast::Struct>()) {
-      if (!str->IsBlockDecorated()) {
-        if (!EmitStructType(current_buffer_, builder_.Sem().Get(str))) {
-          return false;
-        }
+      if (!EmitStructType(current_buffer_, builder_.Sem().Get(str))) {
+        return false;
       }
     } else if (auto* func = decl->As<ast::Function>()) {
       if (func->IsEntryPoint()) {
diff --git a/src/writer/glsl/generator_impl_function_test.cc b/src/writer/glsl/generator_impl_function_test.cc
index 2324dd1..3d710f4 100644
--- a/src/writer/glsl/generator_impl_function_test.cc
+++ b/src/writer/glsl/generator_impl_function_test.cc
@@ -434,6 +434,9 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct UBO {
+  vec4 coord;
+};
 
 layout (binding = 0) uniform UBO_1 {
   vec4 coord;
@@ -484,6 +487,9 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct Uniforms {
+  vec4 coord;
+};
 
 layout (binding = 0) uniform Uniforms_1 {
   vec4 coord;
@@ -535,6 +541,10 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  int a;
+  float b;
+};
 
 layout (binding = 0) buffer Data_1 {
   int a;
@@ -587,6 +597,10 @@
             R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  int a;
+  float b;
+};
 
 layout (binding = 0) buffer Data_1 {
   int a;
@@ -635,6 +649,10 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  int a;
+  float b;
+};
 
 layout (binding = 0) buffer Data_1 {
   int a;
@@ -684,6 +702,10 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  int a;
+  float b;
+};
 
 layout (binding = 0) buffer Data_1 {
   int a;
@@ -735,6 +757,9 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct S {
+  float x;
+};
 
 layout (binding = 0) uniform S_1 {
   float x;
@@ -791,6 +816,9 @@
             R"(#version 310 es
 precision mediump float;
 
+struct S {
+  float x;
+};
 
 layout (binding = 0) buffer S_1 {
   float x;
@@ -1057,6 +1085,9 @@
   EXPECT_EQ(gen.result(), R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  float d;
+};
 
 layout (binding = 0) buffer Data_1 {
   float d;
diff --git a/src/writer/glsl/generator_impl_member_accessor_test.cc b/src/writer/glsl/generator_impl_member_accessor_test.cc
index d1df07a..36809b3 100644
--- a/src/writer/glsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/glsl/generator_impl_member_accessor_test.cc
@@ -296,6 +296,10 @@
       R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  int a;
+  mat2x3 b;
+};
 
 layout (binding = 0) buffer Data_1 {
   int a;
@@ -342,6 +346,10 @@
       R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  float z;
+  mat4x3 a;
+};
 
 layout (binding = 0) buffer Data_1 {
   float z;
@@ -386,6 +394,10 @@
       R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  float z;
+  int a[5];
+};
 
 layout (binding = 0) buffer Data_1 {
   float z;
@@ -431,6 +443,10 @@
       R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  float z;
+  int a[5];
+};
 
 layout (binding = 0) buffer Data_1 {
   float z;
@@ -473,6 +489,10 @@
       R"(#version 310 es
 precision mediump float;
 
+struct Data {
+  float z;
+  int a[5];
+};
 
 layout (binding = 0) buffer Data_1 {
   float z;
@@ -530,6 +550,9 @@
   vec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
@@ -589,6 +612,9 @@
   vec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
@@ -648,6 +674,9 @@
   vec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
@@ -707,6 +736,9 @@
   vec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
@@ -762,6 +794,9 @@
   vec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
@@ -821,6 +856,9 @@
   ivec3 a;
   vec3 b;
 };
+struct Data {
+  Inner c[4];
+};
 
 layout (binding = 0) buffer Data_1 {
   Inner c[4];
diff --git a/src/writer/glsl/generator_impl_sanitizer_test.cc b/src/writer/glsl/generator_impl_sanitizer_test.cc
index 8d5fdb2..c7be764c 100644
--- a/src/writer/glsl/generator_impl_sanitizer_test.cc
+++ b/src/writer/glsl/generator_impl_sanitizer_test.cc
@@ -51,6 +51,9 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
+struct my_struct {
+  float a[];
+};
 
 layout (binding = 1) buffer my_struct_1 {
   float a[];
@@ -102,6 +105,10 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
+struct my_struct {
+  float z;
+  float a[];
+};
 
 layout (binding = 1) buffer my_struct_1 {
   float z;
@@ -156,6 +163,9 @@
   auto* expect = R"(#version 310 es
 precision mediump float;
 
+struct my_struct {
+  float a[];
+};
 
 layout (binding = 1) buffer my_struct_1 {
   float a[];
diff --git a/test/buffer/storage/static_index/read.wgsl.expected.glsl b/test/buffer/storage/static_index/read.wgsl.expected.glsl
index 4e36bd3..f481a98 100644
--- a/test/buffer/storage/static_index/read.wgsl.expected.glsl
+++ b/test/buffer/storage/static_index/read.wgsl.expected.glsl
@@ -7,6 +7,18 @@
 struct tint_padded_array_element {
   Inner el;
 };
+struct S {
+  ivec3 a;
+  int b;
+  uvec3 c;
+  uint d;
+  vec3 e;
+  float f;
+  mat2x3 g;
+  mat3x2 h;
+  Inner i;
+  tint_padded_array_element j[4];
+};
 
 layout (binding = 0) buffer S_1 {
   ivec3 a;
diff --git a/test/buffer/storage/static_index/write.wgsl.expected.glsl b/test/buffer/storage/static_index/write.wgsl.expected.glsl
index ab273ea..4434c96 100644
--- a/test/buffer/storage/static_index/write.wgsl.expected.glsl
+++ b/test/buffer/storage/static_index/write.wgsl.expected.glsl
@@ -7,6 +7,18 @@
 struct tint_padded_array_element {
   Inner el;
 };
+struct S {
+  ivec3 a;
+  int b;
+  uvec3 c;
+  uint d;
+  vec3 e;
+  float f;
+  mat2x3 g;
+  mat3x2 h;
+  Inner i;
+  tint_padded_array_element j[4];
+};
 
 layout (binding = 0) buffer S_1 {
   ivec3 a;
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
index 30c6e8f..f199d0e 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
@@ -14,6 +14,9 @@
   mat3x2 j;
   ivec4 k[4];
 };
+struct S {
+  Inner arr[8];
+};
 
 layout (binding = 0) uniform S_1 {
   Inner arr[8];
diff --git a/test/buffer/uniform/static_index/read.wgsl.expected.glsl b/test/buffer/uniform/static_index/read.wgsl.expected.glsl
index 27169f0..c7b4979 100644
--- a/test/buffer/uniform/static_index/read.wgsl.expected.glsl
+++ b/test/buffer/uniform/static_index/read.wgsl.expected.glsl
@@ -7,6 +7,20 @@
 struct tint_padded_array_element {
   Inner el;
 };
+struct S {
+  ivec3 a;
+  int b;
+  uvec3 c;
+  uint d;
+  vec3 e;
+  float f;
+  ivec2 g;
+  ivec2 h;
+  mat2x3 i;
+  mat3x2 j;
+  Inner k;
+  tint_padded_array_element l[4];
+};
 
 layout (binding = 0) uniform S_1 {
   ivec3 a;
diff --git a/test/bug/dawn/947.wgsl.expected.glsl b/test/bug/dawn/947.wgsl.expected.glsl
index b46d8fc..3bea768 100644
--- a/test/bug/dawn/947.wgsl.expected.glsl
+++ b/test/bug/dawn/947.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct Uniforms {
+  vec2 u_scale;
+  vec2 u_offset;
+};
 
 layout (binding = 0) uniform Uniforms_1 {
   vec2 u_scale;
@@ -61,6 +65,10 @@
 #version 310 es
 precision mediump float;
 
+struct Uniforms {
+  vec2 u_scale;
+  vec2 u_offset;
+};
 struct VertexOutputs {
   vec2 texcoords;
   vec4 position;
diff --git a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
index 8920c6e..34598bf 100644
--- a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
index 22345a8..a2d8b26 100644
--- a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
index e314c42..b6fe342 100644
--- a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
@@ -1,15 +1,26 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
 } ubo;
 
+struct Result {
+  int tint_symbol;
+};
+
 layout (binding = 2) buffer Result_1 {
   int tint_symbol;
 } result;
 
+struct SSBO {
+  int data[4];
+};
+
 layout (binding = 1) buffer SSBO_1 {
   int data[4];
 } ssbo;
diff --git a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
index f0eb7e8..cb10e51 100644
--- a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
@@ -4,12 +4,20 @@
 struct tint_padded_array_element {
   int el;
 };
+struct UBO {
+  tint_padded_array_element data[4];
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   tint_padded_array_element data[4];
   int dynamic_idx;
 } ubo;
 
+struct Result {
+  int tint_symbol;
+};
+
 layout (binding = 2) buffer Result_1 {
   int tint_symbol;
 } result;
diff --git a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
index 517ad2e..63c02da 100644
--- a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
index 3a085d7..6f1e673 100644
--- a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
index 5009af2..fd39680 100644
--- a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
index ef743de..7978da0 100644
--- a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
index ee89365..9e134bd 100644
--- a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
index 4374a4f..7f63a15 100644
--- a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
@@ -1,15 +1,26 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
 } ubo;
 
+struct Result {
+  int tint_symbol;
+};
+
 layout (binding = 2) buffer Result_1 {
   int tint_symbol;
 } result;
 
+struct SSBO {
+  int data[4];
+};
+
 layout (binding = 1) buffer SSBO_1 {
   int data[4];
 } ssbo;
diff --git a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
index e28fc0b..bd2a954 100644
--- a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct UBO {
+  int dynamic_idx;
+};
 
 layout (binding = 0) uniform UBO_1 {
   int dynamic_idx;
@@ -9,6 +12,9 @@
 struct S {
   int data[64];
 };
+struct Result {
+  int tint_symbol;
+};
 
 layout (binding = 1) buffer Result_1 {
   int tint_symbol;
diff --git a/test/bug/tint/1088.spvasm.expected.glsl b/test/bug/tint/1088.spvasm.expected.glsl
index d1e9121..38a4ce4 100644
--- a/test/bug/tint/1088.spvasm.expected.glsl
+++ b/test/bug/tint/1088.spvasm.expected.glsl
@@ -4,6 +4,12 @@
 struct tint_padded_array_element {
   float el;
 };
+struct LeftOver {
+  mat4 worldViewProjection;
+  float time;
+  mat4 test2[2];
+  tint_padded_array_element test[4];
+};
 
 vec3 position = vec3(0.0f, 0.0f, 0.0f);
 layout (binding = 2) uniform LeftOver_1 {
diff --git a/test/bug/tint/221.wgsl.expected.glsl b/test/bug/tint/221.wgsl.expected.glsl
index a6e8124..6df8d78 100644
--- a/test/bug/tint/221.wgsl.expected.glsl
+++ b/test/bug/tint/221.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct Buf {
+  uint count;
+  uint data[50];
+};
 
 layout (binding = 0) buffer Buf_1 {
   uint count;
diff --git a/test/bug/tint/403.wgsl.expected.glsl b/test/bug/tint/403.wgsl.expected.glsl
index 9909e66..81cdb18 100644
--- a/test/bug/tint/403.wgsl.expected.glsl
+++ b/test/bug/tint/403.wgsl.expected.glsl
@@ -1,6 +1,12 @@
 #version 310 es
 precision mediump float;
 
+struct vertexUniformBuffer1 {
+  mat2 transform1;
+};
+struct vertexUniformBuffer2 {
+  mat2 transform2;
+};
 
 layout (binding = 0) uniform vertexUniformBuffer1_1 {
   mat2 transform1;
diff --git a/test/bug/tint/492.wgsl.expected.glsl b/test/bug/tint/492.wgsl.expected.glsl
index 69f3063..11b70ab 100644
--- a/test/bug/tint/492.wgsl.expected.glsl
+++ b/test/bug/tint/492.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int a;
+};
 
 layout (binding = 0) buffer S_1 {
   int a;
diff --git a/test/bug/tint/749.spvasm.expected.glsl b/test/bug/tint/749.spvasm.expected.glsl
index a551d92..5c9f099 100644
--- a/test/bug/tint/749.spvasm.expected.glsl
+++ b/test/bug/tint/749.spvasm.expected.glsl
@@ -4,6 +4,9 @@
 struct QuicksortObject {
   int numbers[10];
 };
+struct buf0 {
+  vec2 resolution;
+};
 
 QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
 vec4 tint_symbol = vec4(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/bug/tint/870.spvasm.expected.glsl b/test/bug/tint/870.spvasm.expected.glsl
index 631204b..57cbe8d 100644
--- a/test/bug/tint/870.spvasm.expected.glsl
+++ b/test/bug/tint/870.spvasm.expected.glsl
@@ -7,6 +7,9 @@
   int essence;
   int orientation[6];
 };
+struct x_B4_BuildInformation {
+  sspp962805860buildInformationS passthru;
+};
 
 layout (binding = 2) buffer x_B4_BuildInformation_1 {
   sspp962805860buildInformationS passthru;
diff --git a/test/bug/tint/926.wgsl.expected.glsl b/test/bug/tint/926.wgsl.expected.glsl
index c54318d..ca68eca 100644
--- a/test/bug/tint/926.wgsl.expected.glsl
+++ b/test/bug/tint/926.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct DrawIndirectArgs {
+  uint vertexCount;
+};
 
 layout (binding = 5) buffer DrawIndirectArgs_1 {
   uint vertexCount;
diff --git a/test/bug/tint/942.wgsl.expected.glsl b/test/bug/tint/942.wgsl.expected.glsl
index 3e730ee..50c0e13 100644
--- a/test/bug/tint/942.wgsl.expected.glsl
+++ b/test/bug/tint/942.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct Params {
+  uint filterDim;
+  uint blockDim;
+};
 
 
 layout (binding = 1) uniform Params_1 {
@@ -10,6 +14,10 @@
 uniform highp sampler2D inputTex;
 uniform highp writeonly image2D outputTex;
 
+struct Flip {
+  uint value;
+};
+
 layout (binding = 3) uniform Flip_1 {
   uint value;
 } flip;
diff --git a/test/bug/tint/959.wgsl.expected.glsl b/test/bug/tint/959.wgsl.expected.glsl
index 584c796..6cc913a 100644
--- a/test/bug/tint/959.wgsl.expected.glsl
+++ b/test/bug/tint/959.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  float a;
+};
 
 layout (binding = 0) buffer S_1 {
   float a;
diff --git a/test/bug/tint/980.wgsl.expected.glsl b/test/bug/tint/980.wgsl.expected.glsl
index 3f7cc01..0a23dd2 100644
--- a/test/bug/tint/980.wgsl.expected.glsl
+++ b/test/bug/tint/980.wgsl.expected.glsl
@@ -7,6 +7,11 @@
   return normalize(normal);
 }
 
+struct S {
+  vec3 v;
+  uint i;
+};
+
 layout (binding = 0) buffer S_1 {
   vec3 v;
   uint i;
diff --git a/test/bug/tint/993.wgsl.expected.glsl b/test/bug/tint/993.wgsl.expected.glsl
index e0485c5..bd72c86 100644
--- a/test/bug/tint/993.wgsl.expected.glsl
+++ b/test/bug/tint/993.wgsl.expected.glsl
@@ -1,15 +1,26 @@
 #version 310 es
 precision mediump float;
 
+struct Constants {
+  uint zero;
+};
 
 layout (binding = 0) uniform Constants_1 {
   uint zero;
 } constants;
 
+struct Result {
+  uint value;
+};
+
 layout (binding = 1) buffer Result_1 {
   uint value;
 } result;
 
+struct TestData {
+  int data[3];
+};
+
 layout (binding = 0) buffer TestData_1 {
   int data[3];
 } s;
diff --git a/test/bug/tint/998.wgsl.expected.glsl b/test/bug/tint/998.wgsl.expected.glsl
index 7f04e45..ff8352a 100644
--- a/test/bug/tint/998.wgsl.expected.glsl
+++ b/test/bug/tint/998.wgsl.expected.glsl
@@ -1,11 +1,17 @@
 #version 310 es
 precision mediump float;
 
+struct Constants {
+  uint zero;
+};
 
 layout (binding = 0) uniform Constants_1 {
   uint zero;
 } constants;
 
+struct Result {
+  uint value;
+};
 struct S {
   uint data[3];
 };
diff --git a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
index 79f4870..e649373 100644
--- a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  mat3x2 matrix;
+  vec3 vector;
+};
 
 layout (binding = 0) uniform S_1 {
   mat3x2 matrix;
diff --git a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
index ba963d9..33ba823 100644
--- a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  mat3 matrix;
+  vec3 vector;
+};
 
 layout (binding = 0) uniform S_1 {
   mat3 matrix;
diff --git a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
index 6103644..7b6342b 100644
--- a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  mat3 matrix;
+  vec3 vector;
+};
 
 layout (binding = 0) uniform S_1 {
   mat3 matrix;
diff --git a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
index 2b7ad6d..645908f 100644
--- a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.glsl
@@ -1,6 +1,10 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  mat4x3 matrix;
+  vec3 vector;
+};
 
 layout (binding = 0) uniform S_1 {
   mat4x3 matrix;
diff --git a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.glsl b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.glsl
index f2dd43a..3e36b2d 100644
--- a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.glsl b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.glsl
index a324c7a..d9c5a35 100644
--- a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.glsl b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.glsl
index a4c446d..9e528ea 100644
--- a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.glsl b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.glsl
index c7c9601..d76169e 100644
--- a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
index 93d6d9e..32a2f50 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
@@ -9,6 +9,9 @@
 }
 
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -38,6 +41,9 @@
 }
 
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
index 72a7f09..2820d4c 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
@@ -9,6 +9,9 @@
 }
 
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -38,6 +41,9 @@
 }
 
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.glsl b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.glsl
index a4f0b7f..74dc87d 100644
--- a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.glsl b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.glsl
index bc0e46e..de3f371 100644
--- a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.glsl b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.glsl
index 68355ce..3581163 100644
--- a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.glsl b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
index 373dafa..c1d0eaa 100644
--- a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.glsl b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.glsl
index e95789e..95bb783 100644
--- a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.glsl b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.glsl
index f5392cf..02868b3 100644
--- a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.glsl b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.glsl
index 0897032..ac4746e 100644
--- a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.glsl b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.glsl
index 85e42dd..7270770 100644
--- a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.glsl b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.glsl
index aafb344..9d21c00 100644
--- a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.glsl b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.glsl
index b5f1e99..ad98ddf 100644
--- a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.glsl b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.glsl
index e81b356..93af41a 100644
--- a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.glsl b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.glsl
index eba2fdb..c47fb06 100644
--- a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.glsl b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.glsl
index f9984be..7814d33 100644
--- a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.glsl b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.glsl
index 0f5901c..649250f 100644
--- a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.glsl b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.glsl
index feabaaf..ffa97fb 100644
--- a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  uint arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   uint arg_0;
diff --git a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.glsl b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.glsl
index 6e8d361..2b727f8 100644
--- a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
@@ -22,6 +25,9 @@
 #version 310 es
 precision mediump float;
 
+struct SB_RW {
+  int arg_0;
+};
 
 layout (binding = 0) buffer SB_RW_1 {
   int arg_0;
diff --git a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.glsl b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.glsl
index 42c33b6..1d30f1c 100644
--- a/test/intrinsics/gen/isInf/666f2a.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isInf/666f2a.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isInf/666f2a.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec3<bool> = isInf(vec3<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.glsl b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.glsl
index 7aee66b..74a902c 100644
--- a/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isInf/7bd98f.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isInf/7bd98f.wgsl:28:19 warning: use of deprecated intrinsic
+  var res: bool = isInf(1.0);
+                  ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.glsl b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.glsl
index 8cc9c15..1045535 100644
--- a/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isInf/7e81b5.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isInf/7e81b5.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec4<bool> = isInf(vec4<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.glsl b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.glsl
index 885f145..1919c56 100644
--- a/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isInf/a46d6f.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isInf/a46d6f.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec2<bool> = isInf(vec2<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.glsl b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.glsl
index dc203d6..6b33851 100644
--- a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isNan/1280ab.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec3<bool> = isNan(vec3<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.glsl b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.glsl
index f8b1bb8..6ace2f9 100644
--- a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isNan/4d280d.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec4<bool> = isNan(vec4<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.glsl b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.glsl
index 827aee7..cfc77ea 100644
--- a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isNan/67ecd3.wgsl:28:25 warning: use of deprecated intrinsic
+  var res: vec2<bool> = isNan(vec2<f32>());
+                        ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.glsl b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.glsl
index 0b9f0c6..73191e8 100644
--- a/test/intrinsics/gen/isNan/e4978e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/isNan/e4978e.wgsl.expected.glsl
@@ -1,3 +1,7 @@
+intrinsics/gen/isNan/e4978e.wgsl:28:19 warning: use of deprecated intrinsic
+  var res: bool = isNan(1.0);
+                  ^^^^^
+
 #version 310 es
 precision mediump float;
 
diff --git a/test/intrinsics/ignore/storage_buffer.wgsl.expected.glsl b/test/intrinsics/ignore/storage_buffer.wgsl.expected.glsl
index 2571ad5..211b0a1 100644
--- a/test/intrinsics/ignore/storage_buffer.wgsl.expected.glsl
+++ b/test/intrinsics/ignore/storage_buffer.wgsl.expected.glsl
@@ -9,6 +9,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int i;
+};
 
 layout (binding = 0) buffer S_1 {
   int i;
diff --git a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.glsl b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.glsl
index 9ed6461..987d1c2 100644
--- a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.glsl
+++ b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.glsl
@@ -9,6 +9,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int i;
+};
 
 layout (binding = 0) uniform S_1 {
   int i;
diff --git a/test/layout/storage/mat2x2/f32.wgsl.expected.glsl b/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
index 3859a1d..fde4f57 100644
--- a/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
+++ b/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct SSBO {
+  mat2 m;
+};
 
 layout (binding = 0) buffer SSBO_1 {
   mat2 m;
diff --git a/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl b/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
index 5b84d7f..e30bf57 100644
--- a/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
+++ b/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
@@ -4,6 +4,9 @@
 struct tint_padded_array_element {
   vec2 el;
 };
+struct SSBO {
+  tint_padded_array_element m[2];
+};
 
 layout (binding = 0) buffer SSBO_1 {
   tint_padded_array_element m[2];
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
index 84dff04..b295029 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int a;
+};
 
 layout (binding = 0) buffer S_1 {
   int a;
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
index 9e4df2a..503e6d6 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int a;
+};
 
 layout (binding = 0) uniform S_1 {
   int a;
diff --git a/test/samples/compute_boids.wgsl.expected.glsl b/test/samples/compute_boids.wgsl.expected.glsl
index b924fd4..e5f1906 100644
--- a/test/samples/compute_boids.wgsl.expected.glsl
+++ b/test/samples/compute_boids.wgsl.expected.glsl
@@ -23,6 +23,18 @@
   vec2 pos;
   vec2 vel;
 };
+struct SimParams {
+  float deltaT;
+  float rule1Distance;
+  float rule2Distance;
+  float rule3Distance;
+  float rule1Scale;
+  float rule2Scale;
+  float rule3Scale;
+};
+struct Particles {
+  Particle particles[5];
+};
 struct tint_symbol_6 {
   uvec3 tint_symbol;
 };
@@ -71,6 +83,18 @@
   vec2 pos;
   vec2 vel;
 };
+struct SimParams {
+  float deltaT;
+  float rule1Distance;
+  float rule2Distance;
+  float rule3Distance;
+  float rule1Scale;
+  float rule2Scale;
+  float rule3Scale;
+};
+struct Particles {
+  Particle particles[5];
+};
 struct tint_symbol_6 {
   uvec3 tint_symbol;
 };
@@ -107,6 +131,18 @@
   vec2 pos;
   vec2 vel;
 };
+struct SimParams {
+  float deltaT;
+  float rule1Distance;
+  float rule2Distance;
+  float rule3Distance;
+  float rule1Scale;
+  float rule2Scale;
+  float rule3Scale;
+};
+struct Particles {
+  Particle particles[5];
+};
 
 layout (binding = 0) uniform SimParams_1 {
   float deltaT;
diff --git a/test/samples/cube.wgsl.expected.glsl b/test/samples/cube.wgsl.expected.glsl
index 1afe19d..08ec2e8 100644
--- a/test/samples/cube.wgsl.expected.glsl
+++ b/test/samples/cube.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct Uniforms {
+  mat4 modelViewProjectionMatrix;
+};
 
 layout (binding = 0) uniform Uniforms_1 {
   mat4 modelViewProjectionMatrix;
@@ -63,6 +66,9 @@
 #version 310 es
 precision mediump float;
 
+struct Uniforms {
+  mat4 modelViewProjectionMatrix;
+};
 struct VertexInput {
   vec4 cur_position;
   vec4 color;
diff --git a/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl b/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
index c72d1b6..02095de 100644
--- a/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
+++ b/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int i;
+};
 
 layout (binding = 0) buffer S_1 {
   int i;
diff --git a/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl b/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
index db601bc..1ade86d 100644
--- a/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
+++ b/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
@@ -1,6 +1,9 @@
 #version 310 es
 precision mediump float;
 
+struct S {
+  int i;
+};
 
 layout (binding = 0) uniform S_1 {
   int i;