Suppress inlining when the block address is taken
[oota-llvm.git] / test / Transforms / Inline / blockaddress.ll
1 ; RUN: opt -inline -S < %s | FileCheck %s
2 ; PR10162
3
4 ; Make sure doit is not inlined since the blockaddress is taken
5 ; which could be unsafe
6 ; CHECK: store i8* blockaddress(@doit, %here), i8** %pptr, align 8
7
8 @i = global i32 1, align 4
9 @ptr1 = common global i8* null, align 8
10
11 define void @doit(i8** nocapture %pptr, i32 %cond) nounwind uwtable {
12 entry:
13   %tobool = icmp eq i32 %cond, 0
14   br i1 %tobool, label %if.end, label %here
15
16 here:
17   store i8* blockaddress(@doit, %here), i8** %pptr, align 8
18   br label %if.end
19
20 if.end:
21   ret void
22 }
23
24 define void @f(i32 %cond) nounwind uwtable {
25 entry:
26   call void @doit(i8** @ptr1, i32 %cond)
27   ret void
28 }