blob: 7c66be5295007daa64cae3715a31fe3514d3b8fd [file] [log] [blame]
Rafael Espindolab10a0f22011-06-30 20:14:24 +00001; RUN: opt < %s -simplifycfg -S | FileCheck %s
2
Rafael Espindolad07cf402014-07-30 21:04:00 +00003; Test that a lifetime intrinsic isn't removed because that would change semantics
Rafael Espindolab10a0f22011-06-30 20:14:24 +00004
5; CHECK: foo
6; CHECK: entry:
Rafael Espindolad07cf402014-07-30 21:04:00 +00007; CHECK: bb0:
8; CHECK: bb1:
Rafael Espindolab10a0f22011-06-30 20:14:24 +00009; CHECK: ret
10define void @foo(i1 %x) {
11entry:
12 %a = alloca i8
13 call void @llvm.lifetime.start(i64 -1, i8* %a) nounwind
14 br i1 %x, label %bb0, label %bb1
15
16bb0:
17 call void @llvm.lifetime.end(i64 -1, i8* %a) nounwind
18 br label %bb1
19
20bb1:
21 call void @f()
22 ret void
23}
24
25declare void @f()
26
27declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
28
29declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind