diff --git a/src/tint/lang/hlsl/writer/printer/printer.cc b/src/tint/lang/hlsl/writer/printer/printer.cc
index 94126ec..2da44e1 100644
--- a/src/tint/lang/hlsl/writer/printer/printer.cc
+++ b/src/tint/lang/hlsl/writer/printer/printer.cc
@@ -1518,6 +1518,9 @@
                     // See discussion here: https://github.com/gpuweb/gpuweb/issues/893
                     pre += "precise ";
                 }
+                if (attributes.color) {
+                    TINT_ICE() << "HLSL does not support @color attribute";
+                }
 
                 out << pre;
                 EmitTypeAndName(out, ty, mem_name);
diff --git a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.dxc.hlsl
index 7edf557..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.dxc.hlsl
@@ -1,33 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 uv;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-  float4 In_uv : TEXCOORD0;
-  float4 pos : SV_Position;
-};
-
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 pos, float4 fbf, In tint_symbol) {
-  g(pos[0u], fbf[0u], tint_symbol.uv[0u]);
-}
-
-void f(f_inputs inputs) {
-  float4 v = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
-  In v_1 = {inputs.In_uv};
-  f_inner(v, inputs.fbf, v_1);
-}
-
-DXC validation failure:
-hlsl.hlsl:19:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
index 5b07af9..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/a.wgsl.expected.ir.fxc.hlsl
@@ -1,31 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 uv;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-  float4 In_uv : TEXCOORD0;
-  float4 pos : SV_Position;
-};
-
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 pos, float4 fbf, In tint_symbol) {
-  g(pos[0u], fbf[0u], tint_symbol.uv[0u]);
-}
-
-void f(f_inputs inputs) {
-  float4 v = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
-  In v_1 = {inputs.In_uv};
-  f_inner(v, inputs.fbf, v_1);
-}
-
-FXC validation failure:
-<scrubbed_path>(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.dxc.hlsl
index 7bbb783..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.dxc.hlsl
@@ -1,27 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 uv : TEXCOORD0;
-  float4 pos : SV_Position;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 pos, float4 uv, float4 fbf) {
-  g(pos[0u], uv[0u], fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv, inputs.fbf);
-}
-
-DXC validation failure:
-hlsl.hlsl:15:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
index be295ce..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.fxc.hlsl
@@ -1,25 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 uv : TEXCOORD0;
-  float4 pos : SV_Position;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 pos, float4 uv, float4 fbf) {
-  g(pos[0u], uv[0u], fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])), inputs.uv, inputs.fbf);
-}
-
-FXC validation failure:
-<scrubbed_path>(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.dxc.hlsl
index a15d886..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.dxc.hlsl
@@ -1,34 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-  float4 uv;
-  float4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 In_fbf;
-  float4 In_uv : TEXCOORD0;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.pos[0u], tint_symbol.uv[0u], tint_symbol.fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv, inputs.In_fbf};
-  f_inner(v);
-}
-
-DXC validation failure:
-hlsl.hlsl:21:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
index 2238847..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/c.wgsl.expected.ir.fxc.hlsl
@@ -1,32 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-  float4 uv;
-  float4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 In_fbf;
-  float4 In_uv : TEXCOORD0;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.pos[0u], tint_symbol.uv[0u], tint_symbol.fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u])), inputs.In_uv, inputs.In_fbf};
-  f_inner(v);
-}
-
-FXC validation failure:
-<scrubbed_path>(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.dxc.hlsl
index 20c255c..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.dxc.hlsl
@@ -1,34 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  uint4 fbf_0;
-  int4 fbf_2;
-  float4 uv : TEXCOORD0;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(int a, float b, float c, uint d) {
-}
-
-void f_inner(int4 fbf_2, In tint_symbol, float4 uv, uint4 fbf_0) {
-  g(fbf_2[2u], tint_symbol.pos[0u], uv[0u], fbf_0[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(inputs.fbf_2, v, inputs.uv, inputs.fbf_0);
-}
-
-DXC validation failure:
-hlsl.hlsl:20:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-hlsl.hlsl:20:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
index 6d82423..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/d.wgsl.expected.ir.fxc.hlsl
@@ -1,31 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  uint4 fbf_0;
-  int4 fbf_2;
-  float4 uv : TEXCOORD0;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(int a, float b, float c, uint d) {
-}
-
-void f_inner(int4 fbf_2, In tint_symbol, float4 uv, uint4 fbf_0) {
-  g(fbf_2[2u], tint_symbol.pos[0u], uv[0u], fbf_0[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(inputs.fbf_2, v, inputs.uv, inputs.fbf_0);
-}
-
-FXC validation failure:
-<scrubbed_path>(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.dxc.hlsl
index 2b40e5a..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.dxc.hlsl
@@ -1,32 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  int4 fbf;
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  int4 In_fbf;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(int a, float b) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.fbf[3u], tint_symbol.pos[0u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {inputs.In_fbf, float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(v);
-}
-
-DXC validation failure:
-hlsl.hlsl:19:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
index e90c54e..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/e.wgsl.expected.ir.fxc.hlsl
@@ -1,30 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  int4 fbf;
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  int4 In_fbf;
-  float4 In_pos : SV_Position;
-};
-
-
-void g(int a, float b) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.fbf[3u], tint_symbol.pos[0u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {inputs.In_fbf, float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(v);
-}
-
-FXC validation failure:
-<scrubbed_path>(19,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.dxc.hlsl
index 668fdac..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.dxc.hlsl
@@ -1,31 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-  precise float4 In_pos : SV_Position;
-};
-
-
-void g(float a, float b) {
-}
-
-void f_inner(In tint_symbol, float4 fbf) {
-  g(tint_symbol.pos[0u], fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(v, inputs.fbf);
-}
-
-DXC validation failure:
-hlsl.hlsl:18:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
index f786565..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/f.wgsl.expected.ir.fxc.hlsl
@@ -1,29 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 pos;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-  precise float4 In_pos : SV_Position;
-};
-
-
-void g(float a, float b) {
-}
-
-void f_inner(In tint_symbol, float4 fbf) {
-  g(tint_symbol.pos[0u], fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {float4(inputs.In_pos.xyz, (1.0f / inputs.In_pos[3u]))};
-  f_inner(v, inputs.fbf);
-}
-
-FXC validation failure:
-<scrubbed_path>(18,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.dxc.hlsl
index d4019a4..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.dxc.hlsl
@@ -1,26 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 pos : SV_Position;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b) {
-}
-
-void f_inner(float4 fbf, float4 pos) {
-  g(fbf[3u], pos[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf, float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
-}
-
-DXC validation failure:
-hlsl.hlsl:14:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
index 7884295..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.fxc.hlsl
@@ -1,24 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 pos : SV_Position;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b) {
-}
-
-void f_inner(float4 fbf, float4 pos) {
-  g(fbf[3u], pos[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf, float4(inputs.pos.xyz, (1.0f / inputs.pos[3u])));
-}
-
-FXC validation failure:
-<scrubbed_path>(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.dxc.hlsl
index aa89eec..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.dxc.hlsl
@@ -1,35 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct FBF {
-  float4 c1;
-  int4 c3;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 FBF_c1;
-  int4 FBF_c3;
-  precise float4 pos : SV_Position;
-};
-
-
-void g(float a, float b, int c) {
-}
-
-void f_inner(float4 pos, FBF fbf) {
-  g(fbf.c1[0u], pos[1u], fbf.c3[2u]);
-}
-
-void f(f_inputs inputs) {
-  float4 v = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
-  FBF v_1 = {inputs.FBF_c1, inputs.FBF_c3};
-  f_inner(v, v_1);
-}
-
-DXC validation failure:
-hlsl.hlsl:20:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-hlsl.hlsl:20:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
index 336f8bb..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/h.wgsl.expected.ir.fxc.hlsl
@@ -1,32 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct FBF {
-  float4 c1;
-  int4 c3;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 FBF_c1;
-  int4 FBF_c3;
-  precise float4 pos : SV_Position;
-};
-
-
-void g(float a, float b, int c) {
-}
-
-void f_inner(float4 pos, FBF fbf) {
-  g(fbf.c1[0u], pos[1u], fbf.c3[2u]);
-}
-
-void f(f_inputs inputs) {
-  float4 v = float4(inputs.pos.xyz, (1.0f / inputs.pos[3u]));
-  FBF v_1 = {inputs.FBF_c1, inputs.FBF_c3};
-  f_inner(v, v_1);
-}
-
-FXC validation failure:
-<scrubbed_path>(20,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.dxc.hlsl
index c4b8227..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.dxc.hlsl
@@ -1,34 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 a;
-  float4 b;
-  int4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  int4 In_fbf;
-  float4 In_a : TEXCOORD0;
-  nointerpolation float4 In_b : TEXCOORD1;
-};
-
-
-void g(float a, float b, int c) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.a[0u], tint_symbol.b[1u], tint_symbol.fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {inputs.In_a, inputs.In_b, inputs.In_fbf};
-  f_inner(v);
-}
-
-DXC validation failure:
-hlsl.hlsl:21:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
index f629d60..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/i.wgsl.expected.ir.fxc.hlsl
@@ -1,32 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct In {
-  float4 a;
-  float4 b;
-  int4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  int4 In_fbf;
-  float4 In_a : TEXCOORD0;
-  nointerpolation float4 In_b : TEXCOORD1;
-};
-
-
-void g(float a, float b, int c) {
-}
-
-void f_inner(In tint_symbol) {
-  g(tint_symbol.a[0u], tint_symbol.b[1u], tint_symbol.fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  In v = {inputs.In_a, inputs.In_b, inputs.In_fbf};
-  f_inner(v);
-}
-
-FXC validation failure:
-<scrubbed_path>(21,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.dxc.hlsl
index b007eed..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.dxc.hlsl
@@ -1,27 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 a : TEXCOORD0;
-  nointerpolation float4 b : TEXCOORD1;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 a, float4 b, float4 fbf) {
-  g(a[0u], b[1u], fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.a, inputs.b, inputs.fbf);
-}
-
-DXC validation failure:
-hlsl.hlsl:15:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
index 7f538d5..a120576 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.fxc.hlsl
@@ -1,25 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-  float4 a : TEXCOORD0;
-  nointerpolation float4 b : TEXCOORD1;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b, float c) {
-}
-
-void f_inner(float4 a, float4 b, float4 fbf) {
-  g(a[0u], b[1u], fbf[0u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.a, inputs.b, inputs.fbf);
-}
-
-FXC validation failure:
-<scrubbed_path>(15,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
index 08539b4..a120576 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
@@ -1,42 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct Out {
-  float4 x;
-  float4 y;
-  float4 z;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_outputs {
-  float4 Out_x : SV_Target0;
-  float4 Out_y : SV_Target2;
-  float4 Out_z : SV_Target4;
-};
-
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
-
-
-Out f_inner(float4 fbf_1, float4 fbf_3) {
-  Out v = {fbf_1, (20.0f).xxxx, fbf_3};
-  return v;
-}
-
-f_outputs f(f_inputs inputs) {
-  Out v_1 = f_inner(inputs.fbf_1, inputs.fbf_3);
-  Out v_2 = v_1;
-  Out v_3 = v_1;
-  Out v_4 = v_1;
-  f_outputs v_5 = {v_2.x, v_3.y, v_4.z};
-  return v_5;
-}
-
-DXC validation failure:
-hlsl.hlsl:24:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-f_outputs f(f_inputs inputs) {
-^
-hlsl.hlsl:24:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index f918fde..a120576 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -1,39 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct Out {
-  float4 x;
-  float4 y;
-  float4 z;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_outputs {
-  float4 Out_x : SV_Target0;
-  float4 Out_y : SV_Target2;
-  float4 Out_z : SV_Target4;
-};
-
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
-
-
-Out f_inner(float4 fbf_1, float4 fbf_3) {
-  Out v = {fbf_1, (20.0f).xxxx, fbf_3};
-  return v;
-}
-
-f_outputs f(f_inputs inputs) {
-  Out v_1 = f_inner(inputs.fbf_1, inputs.fbf_3);
-  Out v_2 = v_1;
-  Out v_3 = v_1;
-  Out v_4 = v_1;
-  f_outputs v_5 = {v_2.x, v_3.y, v_4.z};
-  return v_5;
-}
-
-FXC validation failure:
-<scrubbed_path>(24,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.dxc.hlsl
index 5e43b8a..a120576 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.dxc.hlsl
@@ -1,40 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct Out {
-  float4 x;
-  float4 y;
-  float4 z;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_outputs {
-  float4 Out_x : SV_Target0;
-  float4 Out_y : SV_Target2;
-  float4 Out_z : SV_Target3;
-};
-
-struct f_inputs {
-  float4 fbf;
-};
-
-
-Out f_inner(float4 fbf) {
-  Out v = {(10.0f).xxxx, fbf, (30.0f).xxxx};
-  return v;
-}
-
-f_outputs f(f_inputs inputs) {
-  Out v_1 = f_inner(inputs.fbf);
-  Out v_2 = v_1;
-  Out v_3 = v_1;
-  Out v_4 = v_1;
-  f_outputs v_5 = {v_2.x, v_3.y, v_4.z};
-  return v_5;
-}
-
-DXC validation failure:
-hlsl.hlsl:23:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-f_outputs f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
index f6c1ef1..a120576 100644
--- a/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/multiple_outputs/single_input.wgsl.expected.ir.fxc.hlsl
@@ -1,38 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct Out {
-  float4 x;
-  float4 y;
-  float4 z;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_outputs {
-  float4 Out_x : SV_Target0;
-  float4 Out_y : SV_Target2;
-  float4 Out_z : SV_Target3;
-};
-
-struct f_inputs {
-  float4 fbf;
-};
-
-
-Out f_inner(float4 fbf) {
-  Out v = {(10.0f).xxxx, fbf, (30.0f).xxxx};
-  return v;
-}
-
-f_outputs f(f_inputs inputs) {
-  Out v_1 = f_inner(inputs.fbf);
-  Out v_2 = v_1;
-  Out v_3 = v_1;
-  Out v_4 = v_1;
-  f_outputs v_5 = {v_2.x, v_3.y, v_4.z};
-  return v_5;
-}
-
-FXC validation failure:
-<scrubbed_path>(23,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.dxc.hlsl
index 24bee40..a120576 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.dxc.hlsl
@@ -1,29 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_outputs {
-  float4 tint_symbol : SV_Target0;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
-
-
-float4 f_inner(float4 fbf_1, float4 fbf_3) {
-  return (fbf_1 + fbf_3);
-}
-
-f_outputs f(f_inputs inputs) {
-  f_outputs v = {f_inner(inputs.fbf_1, inputs.fbf_3)};
-  return v;
-}
-
-DXC validation failure:
-hlsl.hlsl:15:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-f_outputs f(f_inputs inputs) {
-^
-hlsl.hlsl:15:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index 6edaa6b..a120576 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -1,26 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_outputs {
-  float4 tint_symbol : SV_Target0;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
-
-
-float4 f_inner(float4 fbf_1, float4 fbf_3) {
-  return (fbf_1 + fbf_3);
-}
-
-f_outputs f(f_inputs inputs) {
-  f_outputs v = {f_inner(inputs.fbf_1, inputs.fbf_3)};
-  return v;
-}
-
-FXC validation failure:
-<scrubbed_path>(15,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.dxc.hlsl
index f1a72c2..a120576 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.dxc.hlsl
@@ -1,27 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_outputs {
-  float4 tint_symbol : SV_Target0;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-};
-
-
-float4 f_inner(float4 fbf) {
-  return fbf;
-}
-
-f_outputs f(f_inputs inputs) {
-  f_outputs v = {f_inner(inputs.fbf)};
-  return v;
-}
-
-DXC validation failure:
-hlsl.hlsl:14:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-f_outputs f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
index 8efc01f..a120576 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.fxc.hlsl
@@ -1,25 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_outputs {
-  float4 tint_symbol : SV_Target0;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-struct f_inputs {
-  float4 fbf;
-};
-
-
-float4 f_inner(float4 fbf) {
-  return fbf;
-}
-
-f_outputs f(f_inputs inputs) {
-  f_outputs v = {f_inner(inputs.fbf)};
-  return v;
-}
-
-FXC validation failure:
-<scrubbed_path>(14,22-27): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
index 9d390fb..a120576 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.dxc.hlsl
@@ -1,27 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b) {
-}
-
-void f_inner(float4 fbf_1, float4 fbf_3) {
-  g(fbf_1[0u], fbf_3[1u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf_1, inputs.fbf_3);
-}
-
-DXC validation failure:
-hlsl.hlsl:14:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-hlsl.hlsl:14:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
index b4022c6..a120576 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.fxc.hlsl
@@ -1,24 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf_1;
-  float4 fbf_3;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a, float b) {
-}
-
-void f_inner(float4 fbf_1, float4 fbf_3) {
-  g(fbf_1[0u], fbf_3[1u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf_1, inputs.fbf_3);
-}
-
-FXC validation failure:
-<scrubbed_path>(14,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.dxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.dxc.hlsl
index 254bb4f..a120576 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.dxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.dxc.hlsl
@@ -1,25 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a) {
-}
-
-void f_inner(float4 fbf) {
-  g(fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf);
-}
-
-DXC validation failure:
-hlsl.hlsl:13:1: error: Semantic must be defined for all parameters of an entry function or patch constant function
-void f(f_inputs inputs) {
-^
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
index f947064..a120576 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.fxc.hlsl
@@ -1,23 +1,11 @@
-SKIP: FAILED
+SKIP: INVALID
 
-struct f_inputs {
-  float4 fbf;
-};
+..\..\src\tint\lang\hlsl\writer\printer\printer.cc:1522 internal compiler error: HLSL does not support @color attribute
+********************************************************************
+*  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.  *
+********************************************************************
 
-
-void g(float a) {
-}
-
-void f_inner(float4 fbf) {
-  g(fbf[1u]);
-}
-
-void f(f_inputs inputs) {
-  f_inner(inputs.fbf);
-}
-
-FXC validation failure:
-<scrubbed_path>(13,17-22): error X3502: 'f': input parameter 'inputs' missing semantics
-
-
-tint executable returned error: exit status 1
+tint executable returned error: exit status 0xc000001d
