Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / Inline / inline-recur-stacksize.ll
blob608075807b23743194fd8d27a2cca00f2d545983
1 ; Check the recursive inliner doesn't inline a function with a stack size exceeding a given limit.
2 ; RUN: opt < %s -passes=inline -S | FileCheck --check-prefixes=ALL,UNLIMITED %s
3 ; RUN: opt < %s -passes=inline -S -recursive-inline-max-stacksize=256 | FileCheck --check-prefixes=ALL,LIMITED %s
5 declare void @init(ptr)
7 define internal i32 @foo() {
8   %1 = alloca [65 x i32], align 16
9   call void @init(ptr %1)
10   %2 = load i32, ptr %1, align 4
11   ret i32 %2
14 define i32 @bar() {
15   %1 = call i32 @foo()
16   ret i32 %1
17 ; ALL: define {{.*}}@bar
18 ; ALL-NOT: define
19 ; UNLIMITED-NOT: call {{.*}}@foo
20 ; LIMITED-NOT: call {{.*}}@foo
23 ; Check that, under the tighter limit, baz() doesn't inline foo()
24 define i32 @baz() {
25   %1 = call i32 @foo()
26   %2 = call i32 @baz()
27   %3 = add i32 %1, %2
28   ret i32 %3
29 ; ALL: define {{.*}}@baz
30 ; ALL-NOT: define
31 ; UNLIMITED-NOT: call {{.*}}@foo
32 ; LIMITED: call {{.*}}@foo