diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
index 4308d79..cfd1eb2 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_d17fb2() {
   vec4 res = vec4(0.78539818525314331055f);
 }
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_d17fb2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
 void main() {
-  atan_d17fb2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
