32 lines · plain
1; RUN: opt -aa-pipeline=basic-aa -passes='print<memoryssa>,verify<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s2;3; Makes sure we have a sane model if both successors of some block is the same4; block.5 6define i32 @foo(i1 %a) {7entry:8 %0 = alloca i32, align 49; CHECK: 1 = MemoryDef(liveOnEntry)10; CHECK-NEXT: store i32 411 store i32 4, ptr %012 br i1 %a, label %Loop.Body, label %Loop.End13 14Loop.Body:15; CHECK: 4 = MemoryPhi({entry,1},{Loop.End,3})16; CHECK-NEXT: 2 = MemoryDef(4)17; CHECK-NEXT: store i32 518 store i32 5, ptr %0, align 419 br i1 %a, label %Loop.End, label %Loop.End ; WhyDoWeEvenHaveThatLever.gif20 21Loop.End:22; CHECK: 3 = MemoryPhi({entry,1},{Loop.Body,2},{Loop.Body,2})23; CHECK-NEXT: MemoryUse(3)24; CHECK-NEXT: %1 = load25 %1 = load i32, ptr %0, align 426 %2 = icmp eq i32 5, %127 br i1 %2, label %Ret, label %Loop.Body28 29Ret:30 ret i32 %131}32