SPIR-V: Aggressively prune unreachable merge, continue target
More aggressively prune unreachable code as follows.
When no control flow edges reach a merge block or continue target:
- delete their contents so that:
- a merge block becomes OpLabel, then OpUnreachable
- a continue target becomes OpLabel, then an OpBranch back to the
loop header
- any basic block which is dominated by such a merge block or continue
target is removed as well.
- decorations targeting the removed instructions are removed.
Enables the SPIR-V builder post-processing step the GLSLANG_WEB case.
Showing
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
Test/spv.dead-after-continue.vert
0 → 100644
Test/spv.dead-after-discard.frag
0 → 100644
Test/spv.dead-after-loop-break.vert
0 → 100644
Test/spv.dead-after-return.vert
0 → 100644
Test/spv.dead-after-switch-break.vert
0 → 100644
Please
register
or
sign in
to comment