mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2025-01-03 21:51:05 +00:00
b51b80980c
- Find unreachable continue targets. Look for back edges with a DFS traversal separate from the dominance traversals, where we count the OpLoopMerge from the header to the continue target as an edge in the graph. - It's ok for a loop to have multiple back edges, provided they are all from the same block, and we call that the latch block. This may require a clarification/fix in the SPIR-V spec. - Compute postdominance correctly for infinite loop: Bias *predecessor* traversal root finding so that you use a later block in the original list. This ensures that for certain simple infinite loops in the CFG where neither block branches to a node without successors, that we'll compute the loop header as dominating the latch block, and the latch block as postdominating the loop header. |
||
---|---|---|
.. | ||
BasicBlock.cpp | ||
BasicBlock.h | ||
Construct.cpp | ||
Construct.h | ||
Function.cpp | ||
Function.h | ||
Id.cpp | ||
Id.h | ||
ValidationState.cpp | ||
ValidationState.h |