Skip to content

Commit 91f7153

Browse files
committed
[X86] Add unwind for base pointer test case.
1 parent 758e06b commit 91f7153

File tree

2 files changed

+63
-2
lines changed

2 files changed

+63
-2
lines changed

llvm/test/CodeGen/X86/i386-baseptr.ll

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ define void @base() #0 {
66
; CHECK-LABEL: base:
77
; CHECK: # %bb.0: # %entry
88
; CHECK-NEXT: pushl %ebp
9+
; CHECK-NEXT: .cfi_def_cfa_offset 8
10+
; CHECK-NEXT: .cfi_offset %ebp, -8
911
; CHECK-NEXT: movl %esp, %ebp
12+
; CHECK-NEXT: .cfi_def_cfa_register %ebp
1013
; CHECK-NEXT: pushl %esi
1114
; CHECK-NEXT: andl $-32, %esp
1215
; CHECK-NEXT: subl $32, %esp
1316
; CHECK-NEXT: movl %esp, %esi
17+
; CHECK-NEXT: .cfi_offset %esi, -12
1418
; CHECK-NEXT: calll helper@PLT
1519
; CHECK-NEXT: movl %esp, %ecx
1620
; CHECK-NEXT: leal 31(,%eax,4), %eax
@@ -23,6 +27,7 @@ define void @base() #0 {
2327
; CHECK-NEXT: leal -4(%ebp), %esp
2428
; CHECK-NEXT: popl %esi
2529
; CHECK-NEXT: popl %ebp
30+
; CHECK-NEXT: .cfi_def_cfa %esp, 4
2631
; CHECK-NEXT: retl
2732
entry:
2833
%k = call i32 @helper()
@@ -35,11 +40,15 @@ define void @clobber_base() #0 {
3540
; CHECK-LABEL: clobber_base:
3641
; CHECK: # %bb.0: # %entry
3742
; CHECK-NEXT: pushl %ebp
43+
; CHECK-NEXT: .cfi_def_cfa_offset 8
44+
; CHECK-NEXT: .cfi_offset %ebp, -8
3845
; CHECK-NEXT: movl %esp, %ebp
46+
; CHECK-NEXT: .cfi_def_cfa_register %ebp
3947
; CHECK-NEXT: pushl %esi
4048
; CHECK-NEXT: andl $-128, %esp
4149
; CHECK-NEXT: subl $128, %esp
4250
; CHECK-NEXT: movl %esp, %esi
51+
; CHECK-NEXT: .cfi_offset %esi, -12
4352
; CHECK-NEXT: calll helper@PLT
4453
; CHECK-NEXT: movl %esp, %ecx
4554
; CHECK-NEXT: leal 31(,%eax,4), %eax
@@ -60,6 +69,7 @@ define void @clobber_base() #0 {
6069
; CHECK-NEXT: leal -4(%ebp), %esp
6170
; CHECK-NEXT: popl %esi
6271
; CHECK-NEXT: popl %ebp
72+
; CHECK-NEXT: .cfi_def_cfa %esp, 4
6373
; CHECK-NEXT: retl
6474
entry:
6575
%k = call i32 @helper()
@@ -76,11 +86,15 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
7686
; CHECK-LABEL: clobber_baseptr_argptr:
7787
; CHECK: # %bb.0: # %entry
7888
; CHECK-NEXT: pushl %ebp
89+
; CHECK-NEXT: .cfi_def_cfa_offset 8
90+
; CHECK-NEXT: .cfi_offset %ebp, -8
7991
; CHECK-NEXT: movl %esp, %ebp
92+
; CHECK-NEXT: .cfi_def_cfa_register %ebp
8093
; CHECK-NEXT: pushl %ebx
8194
; CHECK-NEXT: andl $-128, %esp
8295
; CHECK-NEXT: subl $128, %esp
8396
; CHECK-NEXT: movl %esp, %esi
97+
; CHECK-NEXT: .cfi_offset %ebx, -12
8498
; CHECK-NEXT: movl 8(%ebp), %edi
8599
; CHECK-NEXT: calll helper@PLT
86100
; CHECK-NEXT: movl %esp, %ecx
@@ -106,6 +120,7 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
106120
; CHECK-NEXT: leal -4(%ebp), %esp
107121
; CHECK-NEXT: popl %ebx
108122
; CHECK-NEXT: popl %ebp
123+
; CHECK-NEXT: .cfi_def_cfa %esp, 4
109124
; CHECK-NEXT: retl
110125
entry:
111126
%k = call i32 @helper()
@@ -120,6 +135,6 @@ entry:
120135
ret void
121136
}
122137

123-
attributes #0 = { nounwind "frame-pointer"="all"}
138+
attributes #0 = { "frame-pointer"="all"}
124139
!llvm.module.flags = !{!0}
125140
!0 = !{i32 2, !"override-stack-alignment", i32 32}

llvm/test/CodeGen/X86/x86-64-baseptr.ll

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ define void @base() #0 {
1515
; CHECK-LABEL: base:
1616
; CHECK: # %bb.0: # %entry
1717
; CHECK-NEXT: pushq %rbp
18+
; CHECK-NEXT: .cfi_def_cfa_offset 16
19+
; CHECK-NEXT: .cfi_offset %rbp, -16
1820
; CHECK-NEXT: movq %rsp, %rbp
21+
; CHECK-NEXT: .cfi_def_cfa_register %rbp
1922
; CHECK-NEXT: pushq %rbx
2023
; CHECK-NEXT: andq $-32, %rsp
2124
; CHECK-NEXT: subq $32, %rsp
2225
; CHECK-NEXT: movq %rsp, %rbx
26+
; CHECK-NEXT: .cfi_offset %rbx, -24
2327
; CHECK-NEXT: callq helper@PLT
2428
; CHECK-NEXT: movq %rsp, %rcx
2529
; CHECK-NEXT: movl %eax, %eax
@@ -33,16 +37,21 @@ define void @base() #0 {
3337
; CHECK-NEXT: leaq -8(%rbp), %rsp
3438
; CHECK-NEXT: popq %rbx
3539
; CHECK-NEXT: popq %rbp
40+
; CHECK-NEXT: .cfi_def_cfa %rsp, 8
3641
; CHECK-NEXT: retq
3742
;
3843
; X32ABI-LABEL: base:
3944
; X32ABI: # %bb.0: # %entry
4045
; X32ABI-NEXT: pushq %rbp
46+
; X32ABI-NEXT: .cfi_def_cfa_offset 16
47+
; X32ABI-NEXT: .cfi_offset %rbp, -16
4148
; X32ABI-NEXT: movl %esp, %ebp
49+
; X32ABI-NEXT: .cfi_def_cfa_register %rbp
4250
; X32ABI-NEXT: pushq %rbx
4351
; X32ABI-NEXT: andl $-32, %esp
4452
; X32ABI-NEXT: subl $32, %esp
4553
; X32ABI-NEXT: movl %esp, %ebx
54+
; X32ABI-NEXT: .cfi_offset %rbx, -24
4655
; X32ABI-NEXT: callq helper@PLT
4756
; X32ABI-NEXT: # kill: def $eax killed $eax def $rax
4857
; X32ABI-NEXT: leal 31(,%rax,4), %eax
@@ -56,6 +65,7 @@ define void @base() #0 {
5665
; X32ABI-NEXT: leal -8(%ebp), %esp
5766
; X32ABI-NEXT: popq %rbx
5867
; X32ABI-NEXT: popq %rbp
68+
; X32ABI-NEXT: .cfi_def_cfa %rsp, 8
5969
; X32ABI-NEXT: retq
6070
entry:
6171
%k = call i32 @helper()
@@ -68,11 +78,15 @@ define void @clobber_base() #0 {
6878
; CHECK-LABEL: clobber_base:
6979
; CHECK: # %bb.0: # %entry
7080
; CHECK-NEXT: pushq %rbp
81+
; CHECK-NEXT: .cfi_def_cfa_offset 16
82+
; CHECK-NEXT: .cfi_offset %rbp, -16
7183
; CHECK-NEXT: movq %rsp, %rbp
84+
; CHECK-NEXT: .cfi_def_cfa_register %rbp
7285
; CHECK-NEXT: pushq %rbx
7386
; CHECK-NEXT: andq $-128, %rsp
7487
; CHECK-NEXT: subq $128, %rsp
7588
; CHECK-NEXT: movq %rsp, %rbx
89+
; CHECK-NEXT: .cfi_offset %rbx, -24
7690
; CHECK-NEXT: callq helper@PLT
7791
; CHECK-NEXT: movq %rsp, %rcx
7892
; CHECK-NEXT: movl %eax, %eax
@@ -94,16 +108,21 @@ define void @clobber_base() #0 {
94108
; CHECK-NEXT: leaq -8(%rbp), %rsp
95109
; CHECK-NEXT: popq %rbx
96110
; CHECK-NEXT: popq %rbp
111+
; CHECK-NEXT: .cfi_def_cfa %rsp, 8
97112
; CHECK-NEXT: retq
98113
;
99114
; X32ABI-LABEL: clobber_base:
100115
; X32ABI: # %bb.0: # %entry
101116
; X32ABI-NEXT: pushq %rbp
117+
; X32ABI-NEXT: .cfi_def_cfa_offset 16
118+
; X32ABI-NEXT: .cfi_offset %rbp, -16
102119
; X32ABI-NEXT: movl %esp, %ebp
120+
; X32ABI-NEXT: .cfi_def_cfa_register %rbp
103121
; X32ABI-NEXT: pushq %rbx
104122
; X32ABI-NEXT: andl $-128, %esp
105123
; X32ABI-NEXT: subl $128, %esp
106124
; X32ABI-NEXT: movl %esp, %ebx
125+
; X32ABI-NEXT: .cfi_offset %rbx, -24
107126
; X32ABI-NEXT: callq helper@PLT
108127
; X32ABI-NEXT: # kill: def $eax killed $eax def $rax
109128
; X32ABI-NEXT: leal 31(,%rax,4), %eax
@@ -125,6 +144,7 @@ define void @clobber_base() #0 {
125144
; X32ABI-NEXT: leal -8(%ebp), %esp
126145
; X32ABI-NEXT: popq %rbx
127146
; X32ABI-NEXT: popq %rbp
147+
; X32ABI-NEXT: .cfi_def_cfa %rsp, 8
128148
; X32ABI-NEXT: retq
129149
entry:
130150
%k = call i32 @helper()
@@ -141,7 +161,10 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
141161
; CHECK-LABEL: clobber_baseptr_argptr:
142162
; CHECK: # %bb.0: # %entry
143163
; CHECK-NEXT: pushq %rbp
164+
; CHECK-NEXT: .cfi_def_cfa_offset 16
165+
; CHECK-NEXT: .cfi_offset %rbp, -16
144166
; CHECK-NEXT: movq %rsp, %rbp
167+
; CHECK-NEXT: .cfi_def_cfa_register %rbp
145168
; CHECK-NEXT: pushq %rbx
146169
; CHECK-NEXT: andq $-128, %rsp
147170
; CHECK-NEXT: subq $256, %rsp # imm = 0x100
@@ -154,6 +177,15 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
154177
; CHECK-NEXT: movaps %xmm9, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
155178
; CHECK-NEXT: movaps %xmm8, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
156179
; CHECK-NEXT: movq %rsp, %rbx
180+
; CHECK-NEXT: .cfi_offset %rbx, -24
181+
; CHECK-NEXT: .cfi_offset %xmm8, -160
182+
; CHECK-NEXT: .cfi_offset %xmm9, -144
183+
; CHECK-NEXT: .cfi_offset %xmm10, -128
184+
; CHECK-NEXT: .cfi_offset %xmm11, -112
185+
; CHECK-NEXT: .cfi_offset %xmm12, -96
186+
; CHECK-NEXT: .cfi_offset %xmm13, -80
187+
; CHECK-NEXT: .cfi_offset %xmm14, -64
188+
; CHECK-NEXT: .cfi_offset %xmm15, -48
157189
; CHECK-NEXT: movl 16(%rbp), %r14d
158190
; CHECK-NEXT: callq helper@PLT
159191
; CHECK-NEXT: movq %rsp, %rcx
@@ -187,12 +219,16 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
187219
; CHECK-NEXT: leaq -8(%rbp), %rsp
188220
; CHECK-NEXT: popq %rbx
189221
; CHECK-NEXT: popq %rbp
222+
; CHECK-NEXT: .cfi_def_cfa %rsp, 8
190223
; CHECK-NEXT: retq
191224
;
192225
; X32ABI-LABEL: clobber_baseptr_argptr:
193226
; X32ABI: # %bb.0: # %entry
194227
; X32ABI-NEXT: pushq %rbp
228+
; X32ABI-NEXT: .cfi_def_cfa_offset 16
229+
; X32ABI-NEXT: .cfi_offset %rbp, -16
195230
; X32ABI-NEXT: movl %esp, %ebp
231+
; X32ABI-NEXT: .cfi_def_cfa_register %rbp
196232
; X32ABI-NEXT: pushq %rbx
197233
; X32ABI-NEXT: andl $-128, %esp
198234
; X32ABI-NEXT: subl $256, %esp # imm = 0x100
@@ -205,6 +241,15 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
205241
; X32ABI-NEXT: movaps %xmm9, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill
206242
; X32ABI-NEXT: movaps %xmm8, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill
207243
; X32ABI-NEXT: movl %esp, %ebx
244+
; X32ABI-NEXT: .cfi_offset %rbx, -24
245+
; X32ABI-NEXT: .cfi_offset %xmm8, -160
246+
; X32ABI-NEXT: .cfi_offset %xmm9, -144
247+
; X32ABI-NEXT: .cfi_offset %xmm10, -128
248+
; X32ABI-NEXT: .cfi_offset %xmm11, -112
249+
; X32ABI-NEXT: .cfi_offset %xmm12, -96
250+
; X32ABI-NEXT: .cfi_offset %xmm13, -80
251+
; X32ABI-NEXT: .cfi_offset %xmm14, -64
252+
; X32ABI-NEXT: .cfi_offset %xmm15, -48
208253
; X32ABI-NEXT: movl 16(%ebp), %r14d
209254
; X32ABI-NEXT: callq helper@PLT
210255
; X32ABI-NEXT: # kill: def $eax killed $eax def $rax
@@ -238,6 +283,7 @@ define x86_regcallcc void @clobber_baseptr_argptr(i32 %param1, i32 %param2, i32
238283
; X32ABI-NEXT: leal -8(%ebp), %esp
239284
; X32ABI-NEXT: popq %rbx
240285
; X32ABI-NEXT: popq %rbp
286+
; X32ABI-NEXT: .cfi_def_cfa %rsp, 8
241287
; X32ABI-NEXT: retq
242288
entry:
243289
%k = call i32 @helper()
@@ -252,6 +298,6 @@ entry:
252298
ret void
253299
}
254300

255-
attributes #0 = { nounwind "frame-pointer"="all"}
301+
attributes #0 = { "frame-pointer"="all"}
256302
!llvm.module.flags = !{!0}
257303
!0 = !{i32 2, !"override-stack-alignment", i32 32}

0 commit comments

Comments
 (0)