@@ -22,24 +22,20 @@ define hidden i32 @f0(i32 %x) local_unnamed_addr "sign-return-address"="non-leaf
22
22
; CHECK-NEXT: .cfi_startproc
23
23
; CHECK-NEXT: @ %bb.0: @ %entry
24
24
; CHECK-NEXT: pac r12, lr, sp
25
- ; CHECK-NEXT: .save {r7, lr}
26
- ; CHECK-NEXT: push {r7, lr}
27
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
28
- ; CHECK-NEXT: .cfi_offset lr, -4
29
- ; CHECK-NEXT: .cfi_offset r7, -8
30
- ; CHECK-NEXT: .save {ra_auth_code}
31
- ; CHECK-NEXT: str r12, [sp, #-4]!
25
+ ; CHECK-NEXT: .save {r7, ra_auth_code, lr}
26
+ ; CHECK-NEXT: push.w {r7, r12, lr}
32
27
; CHECK-NEXT: .cfi_def_cfa_offset 12
33
- ; CHECK-NEXT: .cfi_offset ra_auth_code, -12
28
+ ; CHECK-NEXT: .cfi_offset lr, -4
29
+ ; CHECK-NEXT: .cfi_offset ra_auth_code, -8
30
+ ; CHECK-NEXT: .cfi_offset r7, -12
34
31
; CHECK-NEXT: .pad #4
35
32
; CHECK-NEXT: sub sp, #4
36
33
; CHECK-NEXT: .cfi_def_cfa_offset 16
37
34
; CHECK-NEXT: subs r0, #1
38
35
; CHECK-NEXT: bl g
39
36
; CHECK-NEXT: adds r0, #1
40
37
; CHECK-NEXT: add sp, #4
41
- ; CHECK-NEXT: ldr r12, [sp], #4
42
- ; CHECK-NEXT: pop.w {r7, lr}
38
+ ; CHECK-NEXT: pop.w {r7, r12, lr}
43
39
; CHECK-NEXT: aut r12, lr, sp
44
40
; CHECK-NEXT: bx lr
45
41
entry:
@@ -56,20 +52,16 @@ define hidden i32 @f1(i32 %x) local_unnamed_addr #0 {
56
52
; CHECK-NEXT: pac r12, lr, sp
57
53
; CHECK-NEXT: vstr fpcxtns, [sp, #-4]!
58
54
; CHECK-NEXT: .cfi_def_cfa_offset 4
59
- ; CHECK-NEXT: .save {r7, lr}
60
- ; CHECK-NEXT: push {r7, lr}
61
- ; CHECK-NEXT: .cfi_def_cfa_offset 12
62
- ; CHECK-NEXT: .cfi_offset lr, -8
63
- ; CHECK-NEXT: .cfi_offset r7, -12
64
- ; CHECK-NEXT: .save {ra_auth_code}
65
- ; CHECK-NEXT: str r12, [sp, #-4]!
55
+ ; CHECK-NEXT: .save {r7, ra_auth_code, lr}
56
+ ; CHECK-NEXT: push.w {r7, r12, lr}
66
57
; CHECK-NEXT: .cfi_def_cfa_offset 16
67
- ; CHECK-NEXT: .cfi_offset ra_auth_code, -16
58
+ ; CHECK-NEXT: .cfi_offset lr, -8
59
+ ; CHECK-NEXT: .cfi_offset ra_auth_code, -12
60
+ ; CHECK-NEXT: .cfi_offset r7, -16
68
61
; CHECK-NEXT: subs r0, #1
69
62
; CHECK-NEXT: bl g
70
63
; CHECK-NEXT: adds r0, #1
71
- ; CHECK-NEXT: ldr r12, [sp], #4
72
- ; CHECK-NEXT: pop.w {r7, lr}
64
+ ; CHECK-NEXT: pop.w {r7, r12, lr}
73
65
; CHECK-NEXT: vscclrm {s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, vpr}
74
66
; CHECK-NEXT: vldr fpcxtns, [sp], #4
75
67
; CHECK-NEXT: aut r12, lr, sp
@@ -87,24 +79,20 @@ define hidden i32 @f2(i32 %x) local_unnamed_addr #1 {
87
79
; CHECK: .cfi_startproc
88
80
; CHECK-NEXT: @ %bb.0: @ %entry
89
81
; CHECK-NEXT: pac r12, lr, sp
90
- ; CHECK-NEXT: .save {r7, lr}
91
- ; CHECK-NEXT: push {r7, lr}
92
- ; CHECK-NEXT: .cfi_def_cfa_offset 8
93
- ; CHECK-NEXT: .cfi_offset lr, -4
94
- ; CHECK-NEXT: .cfi_offset r7, -8
95
- ; CHECK-NEXT: .save {ra_auth_code}
96
- ; CHECK-NEXT: str r12, [sp, #-4]!
82
+ ; CHECK-NEXT: .save {r7, ra_auth_code, lr}
83
+ ; CHECK-NEXT: push.w {r7, r12, lr}
97
84
; CHECK-NEXT: .cfi_def_cfa_offset 12
98
- ; CHECK-NEXT: .cfi_offset ra_auth_code, -12
85
+ ; CHECK-NEXT: .cfi_offset lr, -4
86
+ ; CHECK-NEXT: .cfi_offset ra_auth_code, -8
87
+ ; CHECK-NEXT: .cfi_offset r7, -12
99
88
; CHECK-NEXT: .pad #4
100
89
; CHECK-NEXT: sub sp, #4
101
90
; CHECK-NEXT: .cfi_def_cfa_offset 16
102
91
; CHECK-NEXT: subs r0, #1
103
92
; CHECK-NEXT: bl g
104
93
; CHECK-NEXT: adds r0, #1
105
94
; CHECK-NEXT: add sp, #4
106
- ; CHECK-NEXT: ldr r12, [sp], #4
107
- ; CHECK-NEXT: pop.w {r7, lr}
95
+ ; CHECK-NEXT: pop.w {r7, r12, lr}
108
96
; CHECK-NEXT: aut r12, lr, sp
109
97
; CHECK-NEXT: mrs r12, control
110
98
; CHECK-NEXT: tst.w r12, #8
@@ -149,22 +137,22 @@ attributes #1 = { "sign-return-address"="non-leaf" "cmse_nonsecure_entry" "targe
149
137
150
138
; UNWIND-LABEL: FunctionAddress: 0x0
151
139
; UNWIND: 0x00 ; vsp = vsp + 4
140
+ ; UNWIND-NEXT: 0x80 0x08 ; pop {r7}
152
141
; UNWIND-NEXT: 0xB4 ; pop ra_auth_code
153
- ; UNWIND-NEXT: 0x84 0x08 ; pop {r7, lr}
154
- ; UNWIND-NEXT: 0xB0 ; finish
155
- ; UNWIND-NEXT: 0xB0 ; finish
142
+ ; UNWIND-NEXT: 0x84 0x00 ; pop {lr}
143
+
156
144
157
- ; UNWIND-LABEL: FunctionAddress: 0x24
158
- ; UNWIND: 0xB4 ; pop ra_auth_code
159
- ; UNWIND-NEXT: 0x84 0x08 ; pop {r7, lr}
145
+ ; UNWIND-LABEL: FunctionAddress: 0x1E
146
+ ; UNWIND: 0x80 0x08 ; pop {r7}
147
+ ; UNWIND-NEXT: 0xB4 ; pop ra_auth_code
148
+ ; UNWIND-NEXT: 0x84 0x00 ; pop {lr}
160
149
161
- ; UNWIND-LABEL: FunctionAddress: 0x54
150
+ ; UNWIND-LABEL: FunctionAddress: 0x48
162
151
; UNWIND: 0x00 ; vsp = vsp + 4
152
+ ; UNWIND-NEXT: 0x80 0x08 ; pop {r7}
163
153
; UNWIND-NEXT: 0xB4 ; pop ra_auth_code
164
- ; UNWIND-NEXT: 0x84 0x08 ; pop {r7, lr}
165
- ; UNWIND-NEXT: 0xB0 ; finish
166
- ; UNWIND-NEXT: 0xB0 ; finish
154
+ ; UNWIND-NEXT: 0x84 0x00 ; pop {lr}
167
155
168
156
; UNWIND-LABEL: 00000001 {{.*}} f0
169
- ; UNWIND-LABEL: 00000025 {{.*}} f1
170
- ; UNWIND-LABEL: 00000055 {{.*}} f2
157
+ ; UNWIND-LABEL: 0000001f {{.*}} f1
158
+ ; UNWIND-LABEL: 00000049 {{.*}} f2
0 commit comments