98 lines · plain
1; RUN: opt -disable-output -aa-pipeline=basic-aa -passes='loop-mssa(licm),print<memoryssa>' < %s 2>&1 | FileCheck %s2target triple = "x86_64-unknown-linux-gnu"3 4; CHECK-LABEL: @main(i1 %arg)5; CHECK: 5 = MemoryPhi(6; CHECK-NOT: 7 = MemoryPhi(7@v_67 = external dso_local global i32, align 18@v_76 = external dso_local global i16, align 19@v_86 = external dso_local global ptr, align 110 11define dso_local void @main(i1 %arg) {12entry:13 %v_59 = alloca i16, align 214 br label %for.cond15 16for.cond: ; preds = %for.body, %entry17 br i1 %arg, label %for.body, label %for.end18 19for.body: ; preds = %for.cond20 store i16 undef, ptr %v_59, align 221 br label %for.cond22 23for.end: ; preds = %for.cond24 br i1 %arg, label %if.else568, label %cond.end8225 26cond.false69: ; No predecessors!27 br label %cond.end8228 29cond.end82: ; preds = %cond.false69, %cond.true5530 br i1 %arg, label %if.else568, label %land.lhs.true8731 32land.lhs.true87: ; preds = %cond.end8233 br i1 %arg, label %if.then88, label %if.else56834 35if.then88: ; preds = %land.lhs.true8736 store ptr @v_76, ptr @v_86, align 137 br label %if.end56938 39if.else568: ; preds = %land.lhs.true87, %cond.end82, %for.end40 store volatile i32 undef, ptr @v_67, align 141 br label %if.end56942 43if.end569: ; preds = %if.else568, %if.then8844 ret void45}46 47 48; CHECK-LABEL: @f(i1 %arg)49; CHECK: 7 = MemoryPhi(50; CHECK: 6 = MemoryPhi(51; CHECK: 10 = MemoryPhi(52; CHECK: 9 = MemoryPhi(53; CHECK: 8 = MemoryPhi(54define void @f(i1 %arg) {55entry:56 %e = alloca i16, align 157 br label %lbl158 59lbl1: ; preds = %if.else, %for.end5, %entry60 store i16 undef, ptr %e, align 161 %0 = load i16, ptr %e, align 162 %call = call i16 @g(i16 %0)63 br i1 %arg, label %for.end, label %if.else64 65for.end: ; preds = %if.then66 br i1 true, label %for.cond2, label %lbl267 68lbl2: ; preds = %for.body4, %if.end69 br label %for.cond270 71for.cond2: ; preds = %lbl372 br i1 %arg, label %for.body4, label %for.end573 74for.body4: ; preds = %for.cond275 br label %lbl276 77for.end5: ; preds = %for.cond278 switch i32 undef, label %unreachable [79 i32 0, label %if.end1280 i32 2, label %lbl181 ]82 83if.else: ; preds = %lbl184 switch i32 undef, label %unreachable [85 i32 0, label %if.end1286 i32 2, label %lbl187 ]88 89if.end12: ; preds = %cleanup.cont11s, %cleanup.cont90 call i16 @g(i16 1)91 ret void92 93unreachable: ; preds = %if.else, %for.end594 unreachable95}96 97declare i16 @g(i16)98