llvm-project/llvm/test/Transforms/StructurizeCFG
Brendon Cahoon f1b05a0a2b [StructurizeCFG] Improve basic block ordering
StructurizeCFG linearizes the successors of branching basic block
by adding Flow blocks to record the true/false path for branches
and back edges. This patch reduces the number of Phi values needed
to capture the control flow path by improving the basic block
ordering.

Previously, StructurizeCFG adds loop exit blocks outside of the
loop. StructurizeCFG sets a boolean value to indicate the path
taken, and all exit block live values extend to after the loop.
For loops with a large number of exits blocks, this creates a
huge number of values that are maintained, which increases
compilation time and register pressure. This is problem
especially with ASAN, which adds early exits to blocks with
unreachable instructions for each instrumented check in the loop.

In specific cases, this patch reduces the number of values needed
after the loop by moving the exit block into the loop. This is
done for blocks that have a single predecessor and single successor
by moving the block to appear just after the predecessor.

Differential Revision: https://reviews.llvm.org/D123231
2022-06-22 16:10:41 -05:00
..
AMDGPU [StructurizeCFG] Clean up some boolean not instructions 2022-02-01 09:35:37 +00:00
workarounds
branch-on-argument.ll
bug36015.ll [StructurizeCFG] Clean up some boolean not instructions 2022-02-01 09:35:37 +00:00
improve-order.ll [StructurizeCFG] Improve basic block ordering 2022-06-22 16:10:41 -05:00
interleaved-loop-order.ll LowerSwitch: Avoid inserting NewDefault block 2022-04-14 13:30:56 +08:00
invert-condition.ll [StructurizeCFG] Fix boolean not bug 2022-02-22 17:36:20 +00:00
invert-constantexpr.ll [StructurizeCFG] Clean up some boolean not instructions 2022-02-01 09:35:37 +00:00
loop-continue-phi.ll
loop-multiple-exits.ll
nested-loop-order.ll
nested-loop-subregion.ll
no-branch-to-entry.ll
one-loop-multiple-backedges.ll [StructurizeCFG] Clean up some boolean not instructions 2022-02-01 09:35:37 +00:00
post-order-traversal-bug.ll [StructurizeCFG] Clean up some boolean not instructions 2022-02-01 09:35:37 +00:00
rebuild-ssa-infinite-loop-inseltpoison.ll
rebuild-ssa-infinite-loop.ll
switch.ll