[tint][ir][val] Check result is not null before iterating usages

Fixes: 380089931
Change-Id: I4bd2ec5eedcdfb6681c49791c5021f18329361bc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/215994
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/ir/validator.cc b/src/tint/lang/core/ir/validator.cc
index 0744f3f..e152620 100644
--- a/src/tint/lang/core/ir/validator.cc
+++ b/src/tint/lang/core/ir/validator.cc
@@ -1861,10 +1861,12 @@
 }
 
 void Validator::CheckOnlyUsedInRootBlock(const Instruction* inst) {
-    for (auto& usage : inst->Result(0)->UsagesSorted()) {
-        if (usage.instruction->Block() != mod_.root_block) {
-            AddError(inst) << "root block: instruction used outside of root block "
-                           << inst->TypeInfo().name;
+    if (inst->Result(0)) {
+        for (auto& usage : inst->Result(0)->UsagesSorted()) {
+            if (usage.instruction->Block() != mod_.root_block) {
+                AddError(inst) << "root block: instruction used outside of root block "
+                               << inst->TypeInfo().name;
+            }
         }
     }