diff --git a/llvm/lib/Analysis/MemorySSA.cpp b/llvm/lib/Analysis/MemorySSA.cpp --- a/llvm/lib/Analysis/MemorySSA.cpp +++ b/llvm/lib/Analysis/MemorySSA.cpp @@ -95,6 +95,8 @@ VerifyMemorySSAX("verify-memoryssa", cl::location(VerifyMemorySSA), cl::Hidden, cl::desc("Enable verification of MemorySSA.")); +const static char LiveOnEntryStr[] = "liveOnEntry"; + namespace { /// An assembly annotator class to print Memory SSA information in @@ -133,8 +135,13 @@ if (MemoryAccess *MA = MSSA->getMemoryAccess(I)) { MemoryAccess *Clobber = Walker->getClobberingMemoryAccess(MA); OS << "; " << *MA; - if (Clobber) - OS << " - clobbered by " << *Clobber; + if (Clobber) { + OS << " - clobbered by "; + if (MSSA->isLiveOnEntryDef(Clobber)) + OS << LiveOnEntryStr; + else + OS << *Clobber; + } OS << "\n"; } } @@ -2154,8 +2161,6 @@ return dominates(Dominator, cast(Dominatee.getUser())); } -const static char LiveOnEntryStr[] = "liveOnEntry"; - void MemoryAccess::print(raw_ostream &OS) const { switch (getValueID()) { case MemoryPhiVal: return static_cast(this)->print(OS); diff --git a/llvm/test/Analysis/MemorySSA/print-walker.ll b/llvm/test/Analysis/MemorySSA/print-walker.ll --- a/llvm/test/Analysis/MemorySSA/print-walker.ll +++ b/llvm/test/Analysis/MemorySSA/print-walker.ll @@ -1,15 +1,15 @@ ; RUN: opt -passes='print' -disable-output < %s 2>&1 | FileCheck %s ; CHECK: define void @test -; CHECK: 1 = MemoryDef(liveOnEntry)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry) +; CHECK: 1 = MemoryDef(liveOnEntry)->liveOnEntry - clobbered by liveOnEntry ; CHECK: store i8 42, i8* %a1 -; CHECK: 2 = MemoryDef(1)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry) +; CHECK: 2 = MemoryDef(1)->liveOnEntry - clobbered by liveOnEntry ; CHECK: store i8 42, i8* %a2 ; CHECK: MemoryUse(1) MustAlias - clobbered by 1 = MemoryDef(liveOnEntry)->liveOnEntry ; CHECK: %l1 = load i8, i8* %a1 ; CHECK: MemoryUse(2) MustAlias - clobbered by 2 = MemoryDef(1)->liveOnEntry ; CHECK: %l2 = load i8, i8* %a2 -; CHECK: 3 = MemoryDef(2)->liveOnEntry - clobbered by 0 = MemoryDef(liveOnEntry) +; CHECK: 3 = MemoryDef(2)->liveOnEntry - clobbered by liveOnEntry ; CHECK: store i8 42, i8* %p ; CHECK: 4 = MemoryDef(3)->3 MustAlias - clobbered by 3 = MemoryDef(2)->liveOnEntry ; CHECK: store i8 42, i8* %p