[spirv-reader] Log error for infinite loop. When attempting to propagate through a loop, if we find no exits then the loop is infinite. Emit a nicer error message and terminate. Fixed: 42251941 Change-Id: If911378497444f8bb61530393dd9d514de3f68e4 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/267854 Commit-Queue: James Price <jrprice@google.com> Commit-Queue: dan sinclair <dsinclair@chromium.org> Reviewed-by: James Price <jrprice@google.com> Auto-Submit: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/spirv/reader/parser/parser.cc b/src/tint/lang/spirv/reader/parser/parser.cc index 91e6cfe..1fbfd8e 100644 --- a/src/tint/lang/spirv/reader/parser/parser.cc +++ b/src/tint/lang/spirv/reader/parser/parser.cc
@@ -1218,6 +1218,12 @@ // control as we're jumping over the control to its parent control. (This is an // `if` inside a `loop` where the `if` is doing a `break`). if (ctrl->Exits().IsEmpty()) { + if (ctrl->Is<core::ir::Loop>()) { + TINT_UNREACHABLE() + << "loop detected with no exits which means it's an infinite loop. " + "Infinite loops are not supported in WGSL"; + } + TINT_ASSERT(ctrl->Is<core::ir::If>()); blk = ctrl->Block(); continue;