xref: /llvm-project/llvm/test/Analysis/MemorySSA/loop-rotate-update.ll (revision 46e04f7fe5c0f01ba452489bb966bdf2d560a63d)
1*46e04f7fSNikita Popov; RUN: opt -disable-output -passes="loop-mssa(loop-rotate),print<memoryssa>" -verify-memoryssa < %s 2>&1 | FileCheck %s
2*46e04f7fSNikita Popov
3*46e04f7fSNikita Popov; CHECK: entry:
4*46e04f7fSNikita Popov; CHECK-NEXT: 3 = MemoryDef(liveOnEntry)
5*46e04f7fSNikita Popov; CHECK-NEXT: store ptr null, ptr %p, align 8
6*46e04f7fSNikita Popov; CHECK-NEXT: MemoryUse(3)
7*46e04f7fSNikita Popov; CHECK-NEXT: %val11 = load ptr, ptr %p, align 8
8*46e04f7fSNikita Popov
9*46e04f7fSNikita Popov; CHECK: loop.latch:
10*46e04f7fSNikita Popov; CHECK-NEXT: 5 = MemoryPhi({loop.latch,1},{loop.latch.lr.ph,3})
11*46e04f7fSNikita Popov; CHECK-NEXT: MemoryUse(5)
12*46e04f7fSNikita Popov; CHECK-NEXT: %val2 = load ptr, ptr %p, align 8
13*46e04f7fSNikita Popov; CHECK-NEXT: 1 = MemoryDef(5)
14*46e04f7fSNikita Popov; CHECK-NEXT: store ptr null, ptr %p, align 8
15*46e04f7fSNikita Popov; CHECK-NEXT: MemoryUse(1)
16*46e04f7fSNikita Popov; CHECK-NEXT: %val1 = load ptr, ptr %p, align 8
17*46e04f7fSNikita Popov
18*46e04f7fSNikita Popov; CHECK: exit:
19*46e04f7fSNikita Popov; CHECK-NEXT: 4 = MemoryPhi({entry,3},{loop.exit_crit_edge,1})
20*46e04f7fSNikita Popov
21*46e04f7fSNikita Popovdefine void @test(ptr %p) {
22*46e04f7fSNikita Popoventry:
23*46e04f7fSNikita Popov  br label %loop
24*46e04f7fSNikita Popov
25*46e04f7fSNikita Popovloop:
26*46e04f7fSNikita Popov  store ptr null, ptr %p
27*46e04f7fSNikita Popov  %val1 = load ptr, ptr %p
28*46e04f7fSNikita Popov  %cmp = icmp eq ptr %val1, null
29*46e04f7fSNikita Popov  br i1 %cmp, label %exit, label %loop.latch
30*46e04f7fSNikita Popov
31*46e04f7fSNikita Popovloop.latch:
32*46e04f7fSNikita Popov  %val2 = load ptr, ptr %p
33*46e04f7fSNikita Popov  br label %loop
34*46e04f7fSNikita Popov
35*46e04f7fSNikita Popovexit:
36*46e04f7fSNikita Popov  ret void
37*46e04f7fSNikita Popov}
38