Skip to content

Commit c8e0672

Browse files
committed
[Loops] Use forgetLcssaPhiWithNewPredecessor() in more places
Use the more aggressive invalidation method in a number of places that add incoming values to lcssa phi nodes. It is likely that it's possible to construct cases with incorrect SCEV preservation similar to #109333 for these.
1 parent 6ad268e commit c8e0672

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

llvm/lib/Transforms/Utils/LoopConstrainer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ void LoopConstrainer::cloneLoop(LoopConstrainer::ClonedLoop &Result,
510510
for (PHINode &PN : SBB->phis()) {
511511
Value *OldIncoming = PN.getIncomingValueForBlock(OriginalBB);
512512
PN.addIncoming(GetClonedValue(OldIncoming), ClonedBB);
513-
SE.forgetValue(&PN);
513+
SE.forgetLcssaPhiWithNewPredecessor(&OriginalLoop, &PN);
514514
}
515515
}
516516
}

llvm/lib/Transforms/Utils/LoopUnroll.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
770770
if (It != LastValueMap.end())
771771
Incoming = It->second;
772772
PHI.addIncoming(Incoming, New);
773-
SE->forgetValue(&PHI);
773+
SE->forgetLcssaPhiWithNewPredecessor(L, &PHI);
774774
}
775775
}
776776
// Keep track of new headers and latches as we create them, so that

llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ static void ConnectProlog(Loop *L, Value *BECount, unsigned Count,
146146
PN.setIncomingValueForBlock(NewPreHeader, NewPN);
147147
else
148148
PN.addIncoming(NewPN, PrologExit);
149-
SE.forgetValue(&PN);
149+
SE.forgetLcssaPhiWithNewPredecessor(L, &PN);
150150
}
151151
}
152152

llvm/lib/Transforms/Utils/LoopVersioning.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ void LoopVersioning::addPHINodes(
137137
// original loop.
138138
for (auto I = PHIBlock->begin(); (PN = dyn_cast<PHINode>(I)); ++I) {
139139
if (PN->getIncomingValue(0) == Inst) {
140-
SE->forgetValue(PN);
140+
SE->forgetLcssaPhiWithNewPredecessor(VersionedLoop, PN);
141141
break;
142142
}
143143
}

0 commit comments

Comments
 (0)