brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · cdf51f7 Raw
67 lines · plain
1; RUN: opt -aa-pipeline=basic-aa -passes='print<memoryssa>,verify<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s2;3; Testing many dominators, specifically from a switch statement in C.4 5declare i1 @getBool() readnone6 7define i32 @foo(ptr %p) {8entry:9  br label %loopbegin10 11loopbegin:12; CHECK: 8 = MemoryPhi({entry,liveOnEntry},{sw.epilog,6})13; CHECK-NEXT: %n =14  %n = phi i32 [ 0, %entry ], [ %1, %sw.epilog ]15  %m = alloca i32, align 416  switch i32 %n, label %sw.default [17    i32 0, label %sw.bb18    i32 1, label %sw.bb119    i32 2, label %sw.bb220    i32 3, label %sw.bb321  ]22 23sw.bb:24; CHECK: 1 = MemoryDef(8)25; CHECK-NEXT: store i32 126  store i32 1, ptr %m, align 427  br label %sw.epilog28 29sw.bb1:30; CHECK: 2 = MemoryDef(8)31; CHECK-NEXT: store i32 232  store i32 2, ptr %m, align 433  br label %sw.epilog34 35sw.bb2:36; CHECK: 3 = MemoryDef(8)37; CHECK-NEXT: store i32 338  store i32 3, ptr %m, align 439  br label %sw.epilog40 41sw.bb3:42; CHECK: 4 = MemoryDef(8)43; CHECK-NEXT: store i32 444  store i32 4, ptr %m, align 445  br label %sw.epilog46 47sw.default:48; CHECK: 5 = MemoryDef(8)49; CHECK-NEXT: store i32 550  store i32 5, ptr %m, align 451  br label %sw.epilog52 53sw.epilog:54; CHECK: 7 = MemoryPhi({sw.default,5},{sw.bb,1},{sw.bb1,2},{sw.bb2,3},{sw.bb3,4})55; CHECK-NEXT: MemoryUse(7)56; CHECK-NEXT: %0 =57  %0 = load i32, ptr %m, align 458; CHECK: 6 = MemoryDef(7)59; CHECK-NEXT: %1 =60  %1 = load volatile i32, ptr %p, align 461  %2 = icmp eq i32 %0, %162  br i1 %2, label %exit, label %loopbegin63 64exit:65  ret i32 %166}67