diff --git a/test/bug/tint/804.spv.expected.hlsl b/test/bug/tint/804.spv.expected.hlsl
index 20f7331..2bc83db 100644
--- a/test/bug/tint/804.spv.expected.hlsl
+++ b/test/bug/tint/804.spv.expected.hlsl
@@ -1,3 +1,3 @@
 SKIP: FAILED
 
-error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
+error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/bug/tint/804.spv.expected.msl b/test/bug/tint/804.spv.expected.msl
index 20f7331..2bc83db 100644
--- a/test/bug/tint/804.spv.expected.msl
+++ b/test/bug/tint/804.spv.expected.msl
@@ -1,3 +1,3 @@
 SKIP: FAILED
 
-error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
+error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/bug/tint/804.spv.expected.spvasm b/test/bug/tint/804.spv.expected.spvasm
index 20f7331..2bc83db 100644
--- a/test/bug/tint/804.spv.expected.spvasm
+++ b/test/bug/tint/804.spv.expected.spvasm
@@ -1,3 +1,3 @@
 SKIP: FAILED
 
-error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
+error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/bug/tint/804.spv.expected.wgsl b/test/bug/tint/804.spv.expected.wgsl
index 20f7331..2bc83db 100644
--- a/test/bug/tint/804.spv.expected.wgsl
+++ b/test/bug/tint/804.spv.expected.wgsl
@@ -1,3 +1,3 @@
 SKIP: FAILED
 
-error: unhandled instruction with opcode 150: %712 = OpISubBorrow %710 %107 %470
+error: extended arithmetic is not finalized for WGSL: https://github.com/gpuweb/gpuweb/issues/1565: %712 = OpISubBorrow %710 %107 %470
diff --git a/test/bug/tint/807.spv.expected.hlsl b/test/bug/tint/807.spv.expected.hlsl
index 61d2ef5..f624e54 100644
--- a/test/bug/tint/807.spv.expected.hlsl
+++ b/test/bug/tint/807.spv.expected.hlsl
@@ -1,10 +1,3 @@
 SKIP: FAILED
 
-../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
+error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/bug/tint/807.spv.expected.msl b/test/bug/tint/807.spv.expected.msl
index 61d2ef5..f624e54 100644
--- a/test/bug/tint/807.spv.expected.msl
+++ b/test/bug/tint/807.spv.expected.msl
@@ -1,10 +1,3 @@
 SKIP: FAILED
 
-../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
+error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/bug/tint/807.spv.expected.spvasm b/test/bug/tint/807.spv.expected.spvasm
index 61d2ef5..f624e54 100644
--- a/test/bug/tint/807.spv.expected.spvasm
+++ b/test/bug/tint/807.spv.expected.spvasm
@@ -1,10 +1,3 @@
 SKIP: FAILED
 
-../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
+error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/bug/tint/807.spv.expected.wgsl b/test/bug/tint/807.spv.expected.wgsl
index 61d2ef5..f624e54 100644
--- a/test/bug/tint/807.spv.expected.wgsl
+++ b/test/bug/tint/807.spv.expected.wgsl
@@ -1,10 +1,3 @@
 SKIP: FAILED
 
-../src/ast/array_accessor_expression.cc:29 internal compiler error: TINT_ASSERT(array_)
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
-
+error: undef pointer is not valid: %845 = OpUndef %434
diff --git a/test/bug/tint/998.wgsl.expected.hlsl b/test/bug/tint/998.wgsl.expected.hlsl
index 9e4b25a..30eb1a0 100644
--- a/test/bug/tint/998.wgsl.expected.hlsl
+++ b/test/bug/tint/998.wgsl.expected.hlsl
@@ -17,5 +17,5 @@
   s.data[constants[0].x] = 0u;
   return;
 }
-C:\src\tint\test\Shader@0x00000272D4538E60(15,3-24): error X3500: array reference cannot be used as an l-value; not natively addressable
+C:\src\tint\test\Shader@0x00000150124FBBE0(15,3-24): error X3500: array reference cannot be used as an l-value; not natively addressable
 
diff --git a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.hlsl b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.hlsl
index bd13ca2..ff96141 100644
--- a/test/intrinsics/gen/atan2/57fb13.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atan2/57fb13.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3824
-
-
-
-Validation Failure:
 void atan2_57fb13() {
   float2 res = atan2(float2(0.0f, 0.0f), float2(0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   atan2_57fb13();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   atan2_57fb13();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.hlsl b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.hlsl
index 9626808..69320bd 100644
--- a/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atan2/a70d0d.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3824
-
-
-
-Validation Failure:
 void atan2_a70d0d() {
   float3 res = atan2(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   atan2_a70d0d();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   atan2_a70d0d();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.hlsl b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.hlsl
index 84ab675..d91396d 100644
--- a/test/intrinsics/gen/atan2/ae713e.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/atan2/ae713e.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3824
-
-
-
-Validation Failure:
 void atan2_ae713e() {
   float4 res = atan2(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   atan2_ae713e();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   atan2_ae713e();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.hlsl b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.hlsl
index a62ef30..5eed97e 100644
--- a/test/intrinsics/gen/isNan/1280ab.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/isNan/1280ab.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3823
-
-
-
-Validation Failure:
 void isNan_1280ab() {
   bool3 res = isnan(float3(0.0f, 0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   isNan_1280ab();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   isNan_1280ab();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.hlsl b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.hlsl
index 2a6bb01..f25f0c6 100644
--- a/test/intrinsics/gen/isNan/4d280d.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/isNan/4d280d.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3823
-
-
-
-Validation Failure:
 void isNan_4d280d() {
   bool4 res = isnan(float4(0.0f, 0.0f, 0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   isNan_4d280d();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   isNan_4d280d();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.hlsl b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.hlsl
index 10e4268..016c3b3 100644
--- a/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.hlsl
+++ b/test/intrinsics/gen/isNan/67ecd3.wgsl.expected.hlsl
@@ -1,8 +1,3 @@
-SKIP: https://github.com/microsoft/DirectXShaderCompiler/issues/3823
-
-
-
-Validation Failure:
 void isNan_67ecd3() {
   bool2 res = isnan(float2(0.0f, 0.0f));
 }
@@ -11,10 +6,16 @@
   float4 value : SV_Position;
 };
 
-tint_symbol vertex_main() {
+float4 vertex_main_inner() {
   isNan_67ecd3();
-  const tint_symbol tint_symbol_1 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  return tint_symbol_1;
+  return float4(0.0f, 0.0f, 0.0f, 0.0f);
+}
+
+tint_symbol vertex_main() {
+  const float4 inner_result = vertex_main_inner();
+  tint_symbol wrapper_result = (tint_symbol)0;
+  wrapper_result.value = inner_result;
+  return wrapper_result;
 }
 
 void fragment_main() {
@@ -27,12 +28,3 @@
   isNan_67ecd3();
   return;
 }
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
-
-Internal Compiler error: cast<X>() argument of incompatible type!
-
diff --git a/test/loops/continue_in_switch.wgsl.expected.hlsl b/test/loops/continue_in_switch.wgsl.expected.hlsl
index f26c162..e9f76ea 100644
--- a/test/loops/continue_in_switch.wgsl.expected.hlsl
+++ b/test/loops/continue_in_switch.wgsl.expected.hlsl
@@ -1,3 +1,5 @@
+SKIP: FAILED
+
 [numthreads(1, 1, 1)]
 void f() {
   {
@@ -15,3 +17,5 @@
   }
   return;
 }
+C:\src\tint\test\Shader@0x000001C513B5E750(7,11-19): error X3708: continue cannot be used in a switch
+
