38 lines · plain
1; RUN: opt -disable-output -passes="loop-mssa(loop-rotate),print<memoryssa>" -verify-memoryssa < %s 2>&1 | FileCheck %s2 3; CHECK: entry:4; CHECK-NEXT: 3 = MemoryDef(liveOnEntry)5; CHECK-NEXT: store ptr null, ptr %p, align 86; CHECK-NEXT: MemoryUse(3)7; CHECK-NEXT: %val11 = load ptr, ptr %p, align 88 9; CHECK: loop.latch:10; CHECK-NEXT: 5 = MemoryPhi({loop.latch,1},{loop.latch.lr.ph,3})11; CHECK-NEXT: MemoryUse(5)12; CHECK-NEXT: %val2 = load ptr, ptr %p, align 813; CHECK-NEXT: 1 = MemoryDef(5)14; CHECK-NEXT: store ptr null, ptr %p, align 815; CHECK-NEXT: MemoryUse(1)16; CHECK-NEXT: %val1 = load ptr, ptr %p, align 817 18; CHECK: exit:19; CHECK-NEXT: 4 = MemoryPhi({entry,3},{loop.exit_crit_edge,1})20 21define void @test(ptr %p) {22entry:23 br label %loop24 25loop:26 store ptr null, ptr %p27 %val1 = load ptr, ptr %p28 %cmp = icmp eq ptr %val1, null29 br i1 %cmp, label %exit, label %loop.latch30 31loop.latch:32 %val2 = load ptr, ptr %p33 br label %loop34 35exit:36 ret void37}38