1 ; RUN: opt -inline < %s -S -o - -inline-threshold=8 | FileCheck %s
3 declare void @llvm.lifetime.start(i64 %size, i8* nocapture %ptr)
5 @glbl = external global i32
7 define void @outer1() {
9 ; CHECK-NOT: call void @inner1
11 call void @inner1(i32* %ptr)
15 define void @inner1(i32 *%ptr) {
17 store i32 0, i32* %ptr
18 %C = getelementptr i32* %ptr, i32 0
19 %D = getelementptr i32* %ptr, i32 1
20 %E = bitcast i32* %ptr to i8*
21 %F = select i1 false, i32* %ptr, i32* @glbl
22 call void @llvm.lifetime.start(i64 0, i8* %E)
26 define void @outer2() {
28 ; CHECK: call void @inner2
30 call void @inner2(i32* %ptr)
34 ; %D poisons this call, scalar-repl can't handle that instruction.
35 define void @inner2(i32 *%ptr) {
37 store i32 0, i32* %ptr
38 %C = getelementptr i32* %ptr, i32 0
39 %D = getelementptr i32* %ptr, i32 %A
40 %E = bitcast i32* %ptr to i8*
41 %F = select i1 false, i32* %ptr, i32* @glbl
42 call void @llvm.lifetime.start(i64 0, i8* %E)
46 define void @outer3() {
48 ; CHECK-NOT: call void @inner3
50 call void @inner3(i32* %ptr, i1 undef)
54 define void @inner3(i32 *%ptr, i1 %x) {
55 %A = icmp eq i32* %ptr, null
57 br i1 %A, label %bb.true, label %bb.false
59 ; This block musn't be counted in the inline cost.
70 %t11 = add i32 %t10, 1
71 %t12 = add i32 %t11, 1
72 %t13 = add i32 %t12, 1
73 %t14 = add i32 %t13, 1
74 %t15 = add i32 %t14, 1
75 %t16 = add i32 %t15, 1
76 %t17 = add i32 %t16, 1
77 %t18 = add i32 %t17, 1
78 %t19 = add i32 %t18, 1
79 %t20 = add i32 %t19, 1
85 define void @outer4(i32 %A) {
87 ; CHECK-NOT: call void @inner4
89 call void @inner4(i32* %ptr, i32 %A)
93 ; %D poisons this call, scalar-repl can't handle that instruction. However, we
94 ; still want to detect that the icmp and branch *can* be handled.
95 define void @inner4(i32 *%ptr, i32 %A) {
96 %B = getelementptr i32* %ptr, i32 %A
97 %E = icmp eq i32* %ptr, null
98 br i1 %E, label %bb.true, label %bb.false
100 ; This block musn't be counted in the inline cost.
110 %t10 = add i32 %t9, 1
111 %t11 = add i32 %t10, 1
112 %t12 = add i32 %t11, 1
113 %t13 = add i32 %t12, 1
114 %t14 = add i32 %t13, 1
115 %t15 = add i32 %t14, 1
116 %t16 = add i32 %t15, 1
117 %t17 = add i32 %t16, 1
118 %t18 = add i32 %t17, 1
119 %t19 = add i32 %t18, 1
120 %t20 = add i32 %t19, 1