40 lines · plain
1; RUN: opt -aa-pipeline=basic-aa -passes='print<memoryssa>' -verify-memoryssa < %s 2>&1 | FileCheck %s2;3; Things that BasicAA can prove points to constant memory should be4; liveOnEntry, as well.5 6declare void @clobberAllTheThings()7 8@str = private unnamed_addr constant [2 x i8] c"hi"9 10define i8 @foo() {11; CHECK: 1 = MemoryDef(liveOnEntry)12; CHECK-NEXT: call void @clobberAllTheThings()13 call void @clobberAllTheThings()14; CHECK: MemoryUse(liveOnEntry)15; CHECK-NEXT: %1 = load i816 %1 = load i8, ptr @str, align 117 %2 = getelementptr [2 x i8], ptr @str, i64 0, i64 118; CHECK: MemoryUse(liveOnEntry)19; CHECK-NEXT: %3 = load i820 %3 = load i8, ptr %2, align 121 %4 = add i8 %1, %322 ret i8 %423}24 25define i8 @select(i1 %b) {26 %1 = alloca i8, align 127; CHECK: 1 = MemoryDef(liveOnEntry)28; CHECK-NEXT: store i8 029 store i8 0, ptr %1, align 130 31; CHECK: 2 = MemoryDef(1)32; CHECK-NEXT: call void @clobberAllTheThings()33 call void @clobberAllTheThings()34 %2 = select i1 %b, ptr @str, ptr %135; CHECK: MemoryUse(2)36; CHECK-NEXT: %3 = load i837 %3 = load i8, ptr %2, align 138 ret i8 %339}40