Index: lib/Analysis/MemorySSA.cpp =================================================================== --- lib/Analysis/MemorySSA.cpp +++ lib/Analysis/MemorySSA.cpp @@ -1845,6 +1845,20 @@ const static char LiveOnEntryStr[] = "liveOnEntry"; +static void printAliasResult(raw_ostream &OS, AliasResult AR) { + switch (AR) { + case NoAlias: + { OS << "NoAlias"; return; } + case MustAlias: + { OS << "MustAlias"; return; } + case MayAlias: + { OS << "MayAlias"; return; } + case PartialAlias: + { OS << "PartialAlias"; return; } + default: llvm_unreachable("invalid alias result"); + } +} + void MemoryAccess::print(raw_ostream &OS) const { switch (getValueID()) { case MemoryPhiVal: return static_cast(this)->print(OS); @@ -1863,6 +1877,11 @@ else OS << LiveOnEntryStr; OS << ')'; + Optional AR = getOptimizedAccessType(); + if (AR) { + OS << " "; + printAliasResult(OS, *AR); + } } void MemoryPhi::print(raw_ostream &OS) const { @@ -1899,6 +1918,11 @@ else OS << LiveOnEntryStr; OS << ')'; + Optional AR = getOptimizedAccessType(); + if (AR) { + OS << " "; + printAliasResult(OS, *AR); + } } void MemoryAccess::dump() const { Index: test/Analysis/MemorySSA/optimize-use.ll =================================================================== --- test/Analysis/MemorySSA/optimize-use.ll +++ test/Analysis/MemorySSA/optimize-use.ll @@ -4,30 +4,30 @@ ; Function Attrs: ssp uwtable define i32 @main() { entry: -; CHECK: 1 = MemoryDef(liveOnEntry) +; CHECK: 1 = MemoryDef(liveOnEntry) MayAlias ; CHECK-NEXT: %call = call noalias i8* @_Znwm(i64 4) %call = call noalias i8* @_Znwm(i64 4) %0 = bitcast i8* %call to i32* -; CHECK: 2 = MemoryDef(1) +; CHECK: 2 = MemoryDef(1) MayAlias ; CHECK-NEXT: %call1 = call noalias i8* @_Znwm(i64 4) %call1 = call noalias i8* @_Znwm(i64 4) %1 = bitcast i8* %call1 to i32* -; CHECK: 3 = MemoryDef(2) +; CHECK: 3 = MemoryDef(2) MayAlias ; CHECK-NEXT: store i32 5, i32* %0, align 4 store i32 5, i32* %0, align 4 -; CHECK: 4 = MemoryDef(3) +; CHECK: 4 = MemoryDef(3) MayAlias ; CHECK-NEXT: store i32 7, i32* %1, align 4 store i32 7, i32* %1, align 4 -; CHECK: MemoryUse(3) +; CHECK: MemoryUse(3) MustAlias ; CHECK-NEXT: %2 = load i32, i32* %0, align 4 %2 = load i32, i32* %0, align 4 -; CHECK: MemoryUse(4) +; CHECK: MemoryUse(4) MustAlias ; CHECK-NEXT: %3 = load i32, i32* %1, align 4 %3 = load i32, i32* %1, align 4 -; CHECK: MemoryUse(3) +; CHECK: MemoryUse(3) MustAlias ; CHECK-NEXT: %4 = load i32, i32* %0, align 4 %4 = load i32, i32* %0, align 4 -; CHECK: MemoryUse(4) +; CHECK: MemoryUse(4) MustAlias ; CHECK-NEXT: %5 = load i32, i32* %1, align 4 %5 = load i32, i32* %1, align 4 %add = add nsw i32 %3, %5