brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 0e09137 Raw
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