[spirv-reader] Add problematic CFG case as disabled test
In this case, a basic block is a continue target for both an outer loop and is also for itself as a single-block loop. Bug: Tint:3 Change-Id: If361004a4b871966674ca972922c45e712ce7c9c Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/22420 Reviewed-by: dan sinclair <dsinclair@google.com>
This commit is contained in:
parent
1aadbd4e47
commit
b83c651654
|
@ -6702,6 +6702,33 @@ TEST_F(SpvParserTest, DISABLED_Codegen_IfBreak_FromElse_ForwardWithinElse) {
|
||||||
)";
|
)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(SpvParserTest, DISABLED_BlockIsContinueForMoreThanOneHeader) {
|
||||||
|
// This is valid SPIR-V for Vulkan, but breaks my assumption that a block
|
||||||
|
// could only be a continue target for at most one header. Block 50
|
||||||
|
// is a single block loop but also the continue target for the outer loop.
|
||||||
|
auto assembly = CommonTypes() + R"(
|
||||||
|
%100 = OpFunction %void None %voidfn
|
||||||
|
|
||||||
|
%10 = OpLabel
|
||||||
|
OpBranch %20
|
||||||
|
|
||||||
|
%20 = OpLabel ; outer loop
|
||||||
|
OpLoopMerge %99 %50 None
|
||||||
|
OpBranchConditional %cond %50 %99
|
||||||
|
|
||||||
|
%50 = OpLabel ; continue target, but also single-block loop
|
||||||
|
OpLoopMerge %80 %50 None
|
||||||
|
OpBranchConditional %cond2 %50 %80
|
||||||
|
|
||||||
|
%80 = OpLabel
|
||||||
|
OpBranch %20 ; backedge for outer loop
|
||||||
|
|
||||||
|
%99 = OpLabel
|
||||||
|
OpReturn
|
||||||
|
OpFunctionEnd
|
||||||
|
)";
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace spirv
|
} // namespace spirv
|
||||||
} // namespace reader
|
} // namespace reader
|
||||||
|
|
Loading…
Reference in New Issue