forked from OSchip/llvm-project
[LoopInterchange] Do not change LI for BBs in child loops.
If a loop with child loops becomes our new inner loop after interchanging, we only need to update LoopInfo for the blocks defined in the old outer loop. BBs in child loops will stay there. Reviewers: efriedma, karthikthecool, mcrosier Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D45970 llvm-svn: 330653
This commit is contained in:
parent
f66221c6ec
commit
7441818560
|
@ -1220,6 +1220,9 @@ void LoopInterchangeTransform::restructureLoops(
|
|||
BasicBlock *OuterHeader = NewOuter->getHeader();
|
||||
BasicBlock *OuterLatch = NewOuter->getLoopLatch();
|
||||
for (BasicBlock *BB : OrigInnerBBs) {
|
||||
// Nothing will change for BBs in child loops.
|
||||
if (LI->getLoopFor(BB) != NewOuter)
|
||||
continue;
|
||||
// Remove the new outer loop header and latch from the new inner loop.
|
||||
if (BB == OuterHeader || BB == OuterLatch)
|
||||
NewInner->removeBlockFromLoop(BB);
|
||||
|
|
Loading…
Reference in New Issue