llvm-project/llvm/test/Transforms/LoopInterchange
Congzhe Cao 75b33d6bd5 [LoopInterchange] Check phis in all subloops
This is the bugfix to the miscompile mentioned in
https://reviews.llvm.org/D132055#3814831. The IR
that reproduced the bug is added as the test case in
this patch.

What this patch does is that, during legality phase
instead of checking the phi nodes only in `InnerLoop`
and `OuterLoop`, we check phi nodes in all subloops
of the `OuterLoop`. Suppose if the loop nest is triply
nested, and `InnerLoop` and `OuterLoop` is the middle
loop and the outermost loop respectively, we'll check
phi nodes in the innermost loop as well, in addition to
the ones in the middle and outermost loops.

Reviewed By: Meinersbur, #loopoptwg

Differential Revision: https://reviews.llvm.org/D134930
2022-11-04 00:20:52 -04:00
..
call-instructions.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
currentLimitation.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
debuginfo.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
inner-indvar-depend-on-outer-indvar.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
inner-only-reductions.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
innermost-latch-uses-values-in-middle-header.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchange-flow-dep-outer.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchange-insts-between-indvar.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchange-no-deps.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
interchangeable-innerloop-multiple-indvars.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchangeable-outerloop-multiple-indvars.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchangeable.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchanged-loop-nest-3.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
interchanged-loop-nest-4.ll [LoopPassManager] Ensure to construct loop nests with the outermost loop 2022-09-21 23:59:26 -04:00
lcssa-preheader.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
lcssa.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
loop-interchange-optimization-remarks.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
multilevel-partial-reduction.ll [LoopInterchange] Check phis in all subloops 2022-11-04 00:20:52 -04:00
not-interchanged-dependencies-1.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
not-interchanged-loop-nest-3.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
not-interchanged-tightly-nested.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
outer-header-jump-to-inner-latch.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
outer-only-reductions.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
perserve-lcssa.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
phi-ordering.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
pr43176-move-to-new-latch.ll [LoopInterchange][PR57148] Ensure the correct form of IR after transformation 2022-09-22 00:20:53 -04:00
pr43326-ideal-access-pattern.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
pr43326.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
pr43473-invalid-lcssa-phis-in-inner-exit.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
pr43797-lcssa-for-multiple-outer-loop-blocks.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
pr45743-move-from-inner-preheader.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
pr48212.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
pr56275.ll [LoopInterchange][PR56275] Fix legality with negative dependence vectors 2022-08-03 19:59:01 -04:00
pr57148.ll [LoopInterchange][PR57148] Ensure the correct form of IR after transformation 2022-09-22 00:20:53 -04:00
profitability.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
reductions-across-inner-and-outer-loop.ll [opt] Don't translate legacy -analysis flag to require<analysis> 2022-10-07 14:54:34 -07:00
update-condbranch-duplicate-successors.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00
vector-gep-operand.ll [LoopInterchange] New cost model for loop interchange 2022-06-28 00:08:37 -04:00