Lines Matching +full:- +full:- +full:requested +full:- +full:by

1 ; RUN: llc -mtriple=thumbv7m-none-eabi -o - %s | FileCheck %s
7 ; CHECK-LABEL: leaf:
8 ; CHECK-NOT: push
9 ; CHECK-NOT: sp
10 ; CHECK-NOT: pop
15 ; Leaf function, frame pointer is requested but we don't need any stack frame,
17 define void @leaf_nofpelim() "frame-pointer"="none" {
18 ; CHECK-LABEL: leaf_nofpelim:
19 ; CHECK-NOT: push
20 ; CHECK-NOT: sp
21 ; CHECK-NOT: pop
26 ; Leaf function, frame pointer is requested and we need a stack frame, so we
28 define void @leaf_lowreg_nofpelim() "frame-pointer"="all" {
29 ; CHECK-LABEL: leaf_lowreg_nofpelim:
37 ; Leaf function, frame pointer is requested and we need a stack frame, so we
41 define void @leaf_highreg_nofpelim() "frame-pointer"="all" {
42 ; CHECK-LABEL: leaf_highreg_nofpelim:
45 ; CHECK: str r8, [sp, #-4]!
52 ; Leaf function, frame pointer requested for non-leaf functions only, so no
54 define void @leaf_nononleaffpelim() "frame-pointer"="non-leaf" {
55 ; CHECK-LABEL: leaf_nononleaffpelim:
56 ; CHECK-NOT: push
57 ; CHECK-NOT: sp
58 ; CHECK-NOT: pop
65 ; CHECK-LABEL: call:
66 ; CHECK: push {[[DUMMYREG:r[0-9]+]], lr}
67 ; CHECK-NOT: sp
74 ; Has a call, and frame pointer requested.
75 define void @call_nofpelim() "frame-pointer"="all" {
76 ; CHECK-LABEL: call_nofpelim:
85 ; Has a call, and frame pointer requested for non-leaf function.
86 define void @call_nononleaffpelim() "frame-pointer"="non-leaf" {
87 ; CHECK-LABEL: call_nononleaffpelim:
98 ; CHECK-LABEL: highreg:
100 ; CHECK-NOT: sp
108 ; Has a high register clobbered, frame pointer requested. We need to split the
110 define void @highreg_nofpelim() "frame-pointer"="all" {
111 ; CHECK-LABEL: highreg_nofpelim:
112 ; CHECK: push {[[DUMMYREG:r[0-9]+]], r7, lr}
114 ; CHECK: str r8, [sp, #-4]!
123 ; Has a high register clobbered, frame required due to variable-sized alloca.
125 ; split the push/pop here, because the frame pointer not required by the ABI.
127 ; CHECK-LABEL: highreg_alloca:
129 ; CHECK: add r7, sp, #{{[0-9]+}}
138 ; Has a high register clobbered, frame required due to both variable-sized
140 define void @highreg_alloca_nofpelim(i32 %a) "frame-pointer"="all" {
141 ; CHECK-LABEL: highreg_alloca_nofpelim:
143 ; CHECK: add r7, sp, #{{[0-9]+}}
144 ; CHECK: str r8, [sp, #-4]!