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