llvm-project/llvm/test/Transforms/SimpleLoopUnswitch
Florian Hahn 4a9cde5a79 [SimpleLoopUnswitch] Invalidate the topmost loop with ExitBB as exiting.
SCEV caches the exiting blocks when computing exit counts. In
SimpleLoopUnswitch, we split the exit block of the loop to unswitch.

Currently we only invalidate the loop containing that exit block, but if
that block is the exiting block for a parent loop, we have stale cache
entries. We have to invalidate the top-most loop that contains the exit
block as exiting block. We might also be able to skip invalidating the
loop containing the exit block, if the exit block is not an exiting
block of that loop.

There are also 2 more places in SimpleLoopUnswitch, that use a similar
problematic approach to get the loop to invalidate. If the patch makes
sense, I will also update those places to a similar approach (they deal
with multiple exit blocks, so we cannot directly re-use
getTopMostExitingLoop).

Fixes PR43972.

Reviewers: skatkov, reames, asbirlea, chandlerc

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D70786
2019-12-04 11:32:09 +00:00
..
2006-06-13-SingleEntryPHI.ll
2006-06-27-DeadSwitchCase.ll
2007-05-09-Unreachable.ll
2007-05-09-tl.ll
2007-07-12-ExitDomInfo.ll
2007-07-13-DomInfo.ll
2007-07-18-DomInfo.ll
2007-08-01-Dom.ll
2007-08-01-LCSSA.ll
2007-10-04-DomFrontier.ll
2008-06-02-DomInfo.ll
2008-06-17-DomFrontier.ll
2010-11-18-LCSSA.ll
2011-06-02-CritSwitch.ll
2011-09-26-EHCrash.ll
2012-04-02-IndirectBr.ll
2012-04-30-LoopUnswitch-LPad-Crash.ll
2012-05-20-Phi.ll
2015-09-18-Addrspace.ll
LIV-loop-condtion.ll
basictest-profmd.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
basictest.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
cleanuppad.ll
copy-metadata.ll
crash.ll
delete-dead-blocks.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
exponential-behavior.ll
exponential-nontrivial-unswitch-nested.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
exponential-nontrivial-unswitch-nested2.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
exponential-nontrivial-unswitch.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
exponential-nontrivial-unswitch2.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
exponential-switch-unswitch.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
formDedicatedAfterTrivial1.ll
formDedicatedAfterTrivial2.ll
formDedicatedAfterTrivial3.ll
guards.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
infinite-loop.ll
msan.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
nontrivial-unswitch-cost.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
nontrivial-unswitch-redundant-switch.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
nontrivial-unswitch.ll [MemorySSA] Update for partial unswitch. 2019-10-14 23:52:39 +00:00
pr37888.ll
preserve-analyses.ll
preserve-scev-exiting-multiple-loops.ll [SimpleLoopUnswitch] Invalidate the topmost loop with ExitBB as exiting. 2019-12-04 11:32:09 +00:00
trivial-unswitch-iteration.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
trivial-unswitch-profmd.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
trivial-unswitch.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
update-scev.ll [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00