Skip to content

Commit 1d70ffb

Browse files
aeubanksmemfrob
authored andcommitted
[MemorySSA] Properly handle liveOnEntry in the walker printer
Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D109177
1 parent b464767 commit 1d70ffb

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

llvm/lib/Analysis/MemorySSA.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ static cl::opt<bool, true>
9595
VerifyMemorySSAX("verify-memoryssa", cl::location(VerifyMemorySSA),
9696
cl::Hidden, cl::desc("Enable verification of MemorySSA."));
9797

98+
const static char LiveOnEntryStr[] = "liveOnEntry";
99+
98100
namespace {
99101

100102
/// An assembly annotator class to print Memory SSA information in
@@ -133,8 +135,13 @@ class MemorySSAWalkerAnnotatedWriter : public AssemblyAnnotationWriter {
133135
if (MemoryAccess *MA = MSSA->getMemoryAccess(I)) {
134136
MemoryAccess *Clobber = Walker->getClobberingMemoryAccess(MA);
135137
OS << "; " << *MA;
136-
if (Clobber)
137-
OS << " - clobbered by " << *Clobber;
138+
if (Clobber) {
139+
OS << " - clobbered by ";
140+
if (MSSA->isLiveOnEntryDef(Clobber))
141+
OS << LiveOnEntryStr;
142+
else
143+
OS << *Clobber;
144+
}
138145
OS << "\n";
139146
}
140147
}
@@ -2154,8 +2161,6 @@ bool MemorySSA::dominates(const MemoryAccess *Dominator,
21542161
return dominates(Dominator, cast<MemoryAccess>(Dominatee.getUser()));
21552162
}
21562163

2157-
const static char LiveOnEntryStr[] = "liveOnEntry";
2158-
21592164
void MemoryAccess::print(raw_ostream &OS) const {
21602165
switch (getValueID()) {
21612166
case MemoryPhiVal: return static_cast<const MemoryPhi *>(this)->print(OS);

llvm/test/Analysis/MemorySSA/print-walker.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
; RUN: opt -passes='print<memoryssa-walker>' -disable-output < %s 2>&1 | FileCheck %s
22

33
; CHECK: define void @test
4-
; CHECK: 1 = MemoryDef(liveOnEntry)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry)
4+
; CHECK: 1 = MemoryDef(liveOnEntry)->liveOnEntry - clobbered by liveOnEntry
55
; CHECK: store i8 42, i8* %a1
6-
; CHECK: 2 = MemoryDef(1)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry)
6+
; CHECK: 2 = MemoryDef(1)->liveOnEntry - clobbered by liveOnEntry
77
; CHECK: store i8 42, i8* %a2
88
; CHECK: MemoryUse(1) MustAlias - clobbered by 1 = MemoryDef(liveOnEntry)->liveOnEntry
99
; CHECK: %l1 = load i8, i8* %a1
1010
; CHECK: MemoryUse(2) MustAlias - clobbered by 2 = MemoryDef(1)->liveOnEntry
1111
; CHECK: %l2 = load i8, i8* %a2
12-
; CHECK: 3 = MemoryDef(2)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry)
12+
; CHECK: 3 = MemoryDef(2)->liveOnEntry - clobbered by liveOnEntry
1313
; CHECK: store i8 42, i8* %p
1414
; CHECK: 4 = MemoryDef(3)->3 MustAlias - clobbered by 3 = MemoryDef(2)->liveOnEntry
1515
; CHECK: store i8 42, i8* %p

0 commit comments

Comments
 (0)