forked from OSchip/llvm-project
8393b9fd1f
Instructions defined in the original inner loop preheader may depend on values defined in the outer loop header, but the inner loop header will become the entry block in the loop nest. Move the instructions from the preheader to the outer loop header, so we do not break dominance. We also have to check for unsafe instructions in the preheader. If there are no unsafe instructions, all instructions should be movable. Currently we move all instructions except the terminator and rely on LICM to hoist out invariant instructions later. Fixes PR45743 |
||
---|---|---|
.. | ||
call-instructions.ll | ||
currentLimitation.ll | ||
debuginfo.ll | ||
inner-only-reductions.ll | ||
interchange-flow-dep-outer.ll | ||
interchange-insts-between-indvar.ll | ||
interchange-no-deps.ll | ||
interchangeable.ll | ||
lcssa-preheader.ll | ||
lcssa.ll | ||
loop-interchange-optimization-remarks.ll | ||
not-interchanged-dependencies-1.ll | ||
not-interchanged-loop-nest-3.ll | ||
not-interchanged-tightly-nested.ll | ||
outer-only-reductions.ll | ||
perserve-lcssa.ll | ||
phi-ordering.ll | ||
pr43176-move-to-new-latch.ll | ||
pr43473-invalid-lcssa-phis-in-inner-exit.ll | ||
pr43797-lcssa-for-multiple-outer-loop-blocks.ll | ||
pr45743-move-from-inner-preheader.ll | ||
profitability.ll | ||
reductions-across-inner-and-outer-loop.ll | ||
update-condbranch-duplicate-successors.ll |