Skip to content

Commit 1ddc719

Browse files
committed
Revert "[LICM] Only create load in pre-header when promoting load."
This reverts commit 42229b9. This appears to cause crashes on multiple bots.
1 parent 001e88a commit 1ddc719

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

llvm/lib/Transforms/Scalar/LICM.cpp

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2156,24 +2156,21 @@ bool llvm::promoteLoopAccessesToScalars(
21562156

21572157
// Set up the preheader to have a definition of the value. It is the live-out
21582158
// value from the preheader that uses in the loop will use.
2159-
LoadInst *PreheaderLoad = nullptr;
2160-
if (FoundLoadToPromote) {
2161-
PreheaderLoad =
2162-
new LoadInst(AccessTy, SomePtr, SomePtr->getName() + ".promoted",
2163-
Preheader->getTerminator());
2164-
if (SawUnorderedAtomic)
2165-
PreheaderLoad->setOrdering(AtomicOrdering::Unordered);
2166-
PreheaderLoad->setAlignment(Alignment);
2167-
PreheaderLoad->setDebugLoc(DebugLoc());
2168-
if (AATags)
2169-
PreheaderLoad->setAAMetadata(AATags);
2170-
2171-
MemoryAccess *PreheaderLoadMemoryAccess = MSSAU.createMemoryAccessInBB(
2172-
PreheaderLoad, nullptr, PreheaderLoad->getParent(), MemorySSA::End);
2173-
MemoryUse *NewMemUse = cast<MemoryUse>(PreheaderLoadMemoryAccess);
2174-
MSSAU.insertUse(NewMemUse, /*RenameUses=*/true);
2175-
SSA.AddAvailableValue(Preheader, PreheaderLoad);
2176-
}
2159+
LoadInst *PreheaderLoad = new LoadInst(
2160+
AccessTy, SomePtr, SomePtr->getName() + ".promoted",
2161+
Preheader->getTerminator());
2162+
if (SawUnorderedAtomic)
2163+
PreheaderLoad->setOrdering(AtomicOrdering::Unordered);
2164+
PreheaderLoad->setAlignment(Alignment);
2165+
PreheaderLoad->setDebugLoc(DebugLoc());
2166+
if (AATags)
2167+
PreheaderLoad->setAAMetadata(AATags);
2168+
SSA.AddAvailableValue(Preheader, PreheaderLoad);
2169+
2170+
MemoryAccess *PreheaderLoadMemoryAccess = MSSAU.createMemoryAccessInBB(
2171+
PreheaderLoad, nullptr, PreheaderLoad->getParent(), MemorySSA::End);
2172+
MemoryUse *NewMemUse = cast<MemoryUse>(PreheaderLoadMemoryAccess);
2173+
MSSAU.insertUse(NewMemUse, /*RenameUses=*/true);
21772174

21782175
if (VerifyMemorySSA)
21792176
MSSAU.getMemorySSA()->verifyMemorySSA();
@@ -2184,7 +2181,7 @@ bool llvm::promoteLoopAccessesToScalars(
21842181
if (VerifyMemorySSA)
21852182
MSSAU.getMemorySSA()->verifyMemorySSA();
21862183
// If the SSAUpdater didn't use the load in the preheader, just zap it now.
2187-
if (PreheaderLoad && PreheaderLoad->use_empty())
2184+
if (PreheaderLoad->use_empty())
21882185
eraseInstruction(*PreheaderLoad, *SafetyInfo, MSSAU);
21892186

21902187
return true;

llvm/test/Transforms/LICM/scalar-promote.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,9 +605,10 @@ Out:
605605
define void @test_sink_store_only() writeonly {
606606
; CHECK-LABEL: @test_sink_store_only(
607607
; CHECK-NEXT: entry:
608+
; CHECK-NEXT: [[GLB_PROMOTED:%.*]] = load i8, i8* @glb, align 1
608609
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
609610
; CHECK: loop.header:
610-
; CHECK-NEXT: [[DIV1:%.*]] = phi i8 [ undef, [[ENTRY:%.*]] ], [ [[DIV:%.*]], [[LOOP_LATCH:%.*]] ]
611+
; CHECK-NEXT: [[DIV1:%.*]] = phi i8 [ [[GLB_PROMOTED]], [[ENTRY:%.*]] ], [ [[DIV:%.*]], [[LOOP_LATCH:%.*]] ]
611612
; CHECK-NEXT: [[I:%.*]] = phi i8 [ 0, [[ENTRY]] ], [ [[ADD:%.*]], [[LOOP_LATCH]] ]
612613
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[I]], 4
613614
; CHECK-NEXT: br i1 [[CMP]], label [[LOOP_LATCH]], label [[EXIT:%.*]]

0 commit comments

Comments
 (0)