xref: /llvm-project/llvm/test/Analysis/MemorySSA/lifetime-simple.ll (revision 8e44f13c6d294e6b4864441b22045b507782540c)
1; RUN: opt -aa-pipeline=basic-aa -passes='print<memoryssa>,verify<memoryssa>' -disable-output < %s 2>&1 | FileCheck %s
2; This test checks that lifetime markers are considered clobbers of %P,
3; and due to lack of noalias information, of %Q as well.
4
5define i8 @test(ptr %P, ptr %Q) {
6entry:
7; CHECK:  1 = MemoryDef(liveOnEntry)
8; CHECK-NEXT:   call void @llvm.lifetime.start.p0(i64 32, ptr %P)
9  call void @llvm.lifetime.start.p0(i64 32, ptr %P)
10; CHECK:  MemoryUse(1)
11; CHECK-NEXT:   %0 = load i8, ptr %P
12  %0 = load i8, ptr %P
13; CHECK:  2 = MemoryDef(1)
14; CHECK-NEXT:   store i8 1, ptr %P
15  store i8 1, ptr %P
16; CHECK:  3 = MemoryDef(2)
17; CHECK-NEXT:   call void @llvm.lifetime.end.p0(i64 32, ptr %P)
18  call void @llvm.lifetime.end.p0(i64 32, ptr %P)
19; CHECK:  MemoryUse(3)
20; CHECK-NEXT:   %1 = load i8, ptr %P
21  %1 = load i8, ptr %P
22; CHECK:  MemoryUse(3)
23; CHECK-NEXT:   %2 = load i8, ptr %Q
24  %2 = load i8, ptr %Q
25  ret i8 %1
26}
27declare void @llvm.lifetime.start.p0(i64 %S, ptr nocapture %P) readonly
28declare void @llvm.lifetime.end.p0(i64 %S, ptr nocapture %P)
29