Check result of HLSL generation when useTintIR

When compiling a compute shader, if Generate fails, we'd end up crashing
on accessing `result->workgroup_info`.

Bug: 420743933
Change-Id: Ide64bf29abdbd160703424bdd37324f7dbb61f79
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/244156
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/dawn/native/d3d/ShaderUtils.cpp b/src/dawn/native/d3d/ShaderUtils.cpp
index f6e084e..a9b50b9 100644
--- a/src/dawn/native/d3d/ShaderUtils.cpp
+++ b/src/dawn/native/d3d/ShaderUtils.cpp
@@ -331,6 +331,8 @@
             SCOPED_DAWN_HISTOGRAM_TIMER_MICROS(tracePlatform.UnsafeGetValue(),
                                                "ShaderModuleGenerateHLSL");
             result = tint::hlsl::writer::Generate(ir.Get(), r.tintOptions);
+            DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
+                            result.Failure().reason);
         }
 
         // Workgroup validation has to come after `Generate` because it may require overrides to
@@ -356,11 +358,10 @@
         }
 
         result = tint::hlsl::writer::Generate(transformedProgram, r.tintOptions);
+        DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
+                        result.Failure().reason);
     }
 
-    DAWN_INVALID_IF(result != tint::Success, "An error occurred while generating HLSL:\n%s",
-                    result.Failure().reason);
-
     if (r.useTintIR && r.stage == SingleShaderStage::Vertex) {
         usesVertexIndex = result->has_vertex_index;
         usesInstanceIndex = result->has_instance_index;