xref: /llvm-project/llvm/test/CodeGen/ARM/warn-stack.ll (revision c62745e1678e26185dc93ea30f858c91c03323f9)
1; RUN: llc -mtriple thumbv7-apple-ios3.0.0 < %s 2>&1 >/dev/null | FileCheck %s
2; Check the internal option that warns when the stack frame size exceeds the
3; given amount.
4; <rdar://13987214>
5
6; CHECK-NOT: nowarn
7define void @nowarn() nounwind ssp "frame-pointer"="all" "warn-stack-size"="80" {
8entry:
9  %buffer = alloca [12 x i8], align 1
10  call void @doit(ptr %buffer) nounwind
11  ret void
12}
13
14; CHECK: warning: <unknown>:0:0: stack frame size ([[STCK:[0-9]+]]) exceeds limit (80) in function 'warn'
15; CHECK: {{[0-9]+}}/[[STCK]] ({{.*}}%) spills, {{[0-9]+}}/[[STCK]] ({{.*}}%) variables
16define i32 @warn() nounwind ssp "frame-pointer"="all" "warn-stack-size"="80" {
17entry:
18  %var = alloca i32, align 4
19  %buffer = alloca [80 x i8], align 1
20  call void @doit(ptr %buffer) nounwind
21  call void @doit(ptr %var) nounwind
22  %val = load i32, ptr %var
23  ret i32 %val
24}
25
26; CHECK: warning: stack frame size ([[STCK:[0-9]+]]) exceeds limit (80) in function 'warn_safestack'
27; CHECK: {{[0-9]+}}/[[STCK]] ({{.*}}%) spills, {{[0-9]+}}/[[STCK]] ({{.*}}%) variables, {{[0-9]+}}/[[STCK]] ({{.*}}%) unsafe stack
28define i32 @warn_safestack() nounwind ssp safestack "warn-stack-size"="80" {
29entry:
30  %var = alloca i32, align 4
31  %a = alloca i32, align 4
32  %buffer = alloca [80 x i8], align 1
33  call void @doit(ptr %buffer) nounwind
34  call void @doit(ptr %var) nounwind
35  %val = load i32, ptr %var
36  ret i32 %val
37}
38
39declare void @doit(ptr)
40