Skip to content

Commit 3b943c0

Browse files
committed
[Thumb,test] Improve __stack_chk_guard test
1 parent 9f29050 commit 3b943c0

File tree

1 file changed

+149
-0
lines changed

1 file changed

+149
-0
lines changed

llvm/test/CodeGen/ARM/stack-guard-elf.ll

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
;; R_ARM_GOT_ABS does not have assembler support.
55
; RUN: llc -relocation-model=static < %s | FileCheck %s
66
; RUN: llc -relocation-model=pic < %s | FileCheck %s
7+
;; Also check Thumb1 and Thumb2.
8+
; RUN: llc -mtriple=thumbv6-linux-gnueabi -relocation-model=static < %s | FileCheck %s --check-prefix=THUMB1
9+
; RUN: llc -mtriple=thumbv6-linux-gnueabi -relocation-model=pic < %s | FileCheck %s --check-prefix=THUMB1-PIC
10+
; RUN: llc -mtriple=thumbv7-linux-gnueabi -relocation-model=static < %s | FileCheck %s --check-prefix=THUMB2
11+
; RUN: llc -mtriple=thumbv7-linux-gnueabi -relocation-model=pic < %s | FileCheck %s --check-prefix=THUMB2-PIC
712

813
target triple = "armv7a-linux-gnueabi"
914

@@ -42,6 +47,150 @@ define i32 @test1() #0 {
4247
; CHECK-NEXT: .LCPI0_1:
4348
; CHECK-NEXT: .Ltmp1:
4449
; CHECK-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+8)-.Ltmp1)
50+
;
51+
; THUMB1-LABEL: test1:
52+
; THUMB1: @ %bb.0:
53+
; THUMB1-NEXT: .save {r4, r5, r6, lr}
54+
; THUMB1-NEXT: push {r4, r5, r6, lr}
55+
; THUMB1-NEXT: .pad #508
56+
; THUMB1-NEXT: sub sp, #508
57+
; THUMB1-NEXT: .pad #508
58+
; THUMB1-NEXT: sub sp, #508
59+
; THUMB1-NEXT: .pad #16
60+
; THUMB1-NEXT: sub sp, #16
61+
; THUMB1-NEXT: ldr r0, .LCPI0_0
62+
; THUMB1-NEXT: ldr r0, [r0]
63+
; THUMB1-NEXT: ldr r0, [r0]
64+
; THUMB1-NEXT: add r1, sp, #904
65+
; THUMB1-NEXT: str r0, [r1, #124]
66+
; THUMB1-NEXT: add r0, sp, #4
67+
; THUMB1-NEXT: bl foo
68+
; THUMB1-NEXT: add r0, sp, #904
69+
; THUMB1-NEXT: ldr r0, [r0, #124]
70+
; THUMB1-NEXT: ldr r1, .LCPI0_0
71+
; THUMB1-NEXT: ldr r1, [r1]
72+
; THUMB1-NEXT: ldr r1, [r1]
73+
; THUMB1-NEXT: cmp r1, r0
74+
; THUMB1-NEXT: bne .LBB0_2
75+
; THUMB1-NEXT: @ %bb.1:
76+
; THUMB1-NEXT: movs r0, #0
77+
; THUMB1-NEXT: add sp, #508
78+
; THUMB1-NEXT: add sp, #508
79+
; THUMB1-NEXT: add sp, #16
80+
; THUMB1-NEXT: pop {r4, r5, r6, pc}
81+
; THUMB1-NEXT: .LBB0_2:
82+
; THUMB1-NEXT: bl __stack_chk_fail
83+
; THUMB1-NEXT: .p2align 2
84+
; THUMB1-NEXT: @ %bb.3:
85+
; THUMB1-NEXT: .LCPI0_0:
86+
; THUMB1-NEXT: .long __stack_chk_guard
87+
;
88+
; THUMB1-PIC-LABEL: test1:
89+
; THUMB1-PIC: @ %bb.0:
90+
; THUMB1-PIC-NEXT: .save {r4, r5, r6, lr}
91+
; THUMB1-PIC-NEXT: push {r4, r5, r6, lr}
92+
; THUMB1-PIC-NEXT: .pad #508
93+
; THUMB1-PIC-NEXT: sub sp, #508
94+
; THUMB1-PIC-NEXT: .pad #508
95+
; THUMB1-PIC-NEXT: sub sp, #508
96+
; THUMB1-PIC-NEXT: .pad #16
97+
; THUMB1-PIC-NEXT: sub sp, #16
98+
; THUMB1-PIC-NEXT: ldr r0, .LCPI0_0
99+
; THUMB1-PIC-NEXT: .LPC0_0:
100+
; THUMB1-PIC-NEXT: add r0, pc
101+
; THUMB1-PIC-NEXT: ldr r0, [r0]
102+
; THUMB1-PIC-NEXT: ldr r0, [r0]
103+
; THUMB1-PIC-NEXT: add r1, sp, #904
104+
; THUMB1-PIC-NEXT: str r0, [r1, #124]
105+
; THUMB1-PIC-NEXT: add r0, sp, #4
106+
; THUMB1-PIC-NEXT: bl foo
107+
; THUMB1-PIC-NEXT: add r0, sp, #904
108+
; THUMB1-PIC-NEXT: ldr r0, [r0, #124]
109+
; THUMB1-PIC-NEXT: ldr r1, .LCPI0_1
110+
; THUMB1-PIC-NEXT: .LPC0_1:
111+
; THUMB1-PIC-NEXT: add r1, pc
112+
; THUMB1-PIC-NEXT: ldr r1, [r1]
113+
; THUMB1-PIC-NEXT: ldr r1, [r1]
114+
; THUMB1-PIC-NEXT: cmp r1, r0
115+
; THUMB1-PIC-NEXT: bne .LBB0_2
116+
; THUMB1-PIC-NEXT: @ %bb.1:
117+
; THUMB1-PIC-NEXT: movs r0, #0
118+
; THUMB1-PIC-NEXT: add sp, #508
119+
; THUMB1-PIC-NEXT: add sp, #508
120+
; THUMB1-PIC-NEXT: add sp, #16
121+
; THUMB1-PIC-NEXT: pop {r4, r5, r6, pc}
122+
; THUMB1-PIC-NEXT: .LBB0_2:
123+
; THUMB1-PIC-NEXT: bl __stack_chk_fail
124+
; THUMB1-PIC-NEXT: .p2align 2
125+
; THUMB1-PIC-NEXT: @ %bb.3:
126+
; THUMB1-PIC-NEXT: .LCPI0_0:
127+
; THUMB1-PIC-NEXT: .Ltmp0:
128+
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
129+
; THUMB1-PIC-NEXT: .LCPI0_1:
130+
; THUMB1-PIC-NEXT: .Ltmp1:
131+
; THUMB1-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
132+
;
133+
; THUMB2-LABEL: test1:
134+
; THUMB2: @ %bb.0:
135+
; THUMB2-NEXT: .save {r7, lr}
136+
; THUMB2-NEXT: push {r7, lr}
137+
; THUMB2-NEXT: .pad #1032
138+
; THUMB2-NEXT: sub.w sp, sp, #1032
139+
; THUMB2-NEXT: movw r0, :lower16:__stack_chk_guard
140+
; THUMB2-NEXT: movt r0, :upper16:__stack_chk_guard
141+
; THUMB2-NEXT: ldr r0, [r0]
142+
; THUMB2-NEXT: ldr r0, [r0]
143+
; THUMB2-NEXT: str.w r0, [sp, #1028]
144+
; THUMB2-NEXT: add r0, sp, #4
145+
; THUMB2-NEXT: bl foo
146+
; THUMB2-NEXT: movw r1, :lower16:__stack_chk_guard
147+
; THUMB2-NEXT: ldr.w r0, [sp, #1028]
148+
; THUMB2-NEXT: movt r1, :upper16:__stack_chk_guard
149+
; THUMB2-NEXT: ldr r1, [r1]
150+
; THUMB2-NEXT: ldr r1, [r1]
151+
; THUMB2-NEXT: cmp r1, r0
152+
; THUMB2-NEXT: ittt eq
153+
; THUMB2-NEXT: moveq r0, #0
154+
; THUMB2-NEXT: addeq.w sp, sp, #1032
155+
; THUMB2-NEXT: popeq {r7, pc}
156+
; THUMB2-NEXT: .LBB0_1:
157+
; THUMB2-NEXT: bl __stack_chk_fail
158+
;
159+
; THUMB2-PIC-LABEL: test1:
160+
; THUMB2-PIC: @ %bb.0:
161+
; THUMB2-PIC-NEXT: .save {r7, lr}
162+
; THUMB2-PIC-NEXT: push {r7, lr}
163+
; THUMB2-PIC-NEXT: .pad #1032
164+
; THUMB2-PIC-NEXT: sub.w sp, sp, #1032
165+
; THUMB2-PIC-NEXT: ldr r0, .LCPI0_0
166+
; THUMB2-PIC-NEXT: .LPC0_0:
167+
; THUMB2-PIC-NEXT: add r0, pc
168+
; THUMB2-PIC-NEXT: ldr r0, [r0]
169+
; THUMB2-PIC-NEXT: ldr r0, [r0]
170+
; THUMB2-PIC-NEXT: str.w r0, [sp, #1028]
171+
; THUMB2-PIC-NEXT: add r0, sp, #4
172+
; THUMB2-PIC-NEXT: bl foo
173+
; THUMB2-PIC-NEXT: ldr.w r0, [sp, #1028]
174+
; THUMB2-PIC-NEXT: ldr r1, .LCPI0_1
175+
; THUMB2-PIC-NEXT: .LPC0_1:
176+
; THUMB2-PIC-NEXT: add r1, pc
177+
; THUMB2-PIC-NEXT: ldr r1, [r1]
178+
; THUMB2-PIC-NEXT: ldr r1, [r1]
179+
; THUMB2-PIC-NEXT: cmp r1, r0
180+
; THUMB2-PIC-NEXT: ittt eq
181+
; THUMB2-PIC-NEXT: moveq r0, #0
182+
; THUMB2-PIC-NEXT: addeq.w sp, sp, #1032
183+
; THUMB2-PIC-NEXT: popeq {r7, pc}
184+
; THUMB2-PIC-NEXT: .LBB0_1:
185+
; THUMB2-PIC-NEXT: bl __stack_chk_fail
186+
; THUMB2-PIC-NEXT: .p2align 2
187+
; THUMB2-PIC-NEXT: @ %bb.2:
188+
; THUMB2-PIC-NEXT: .LCPI0_0:
189+
; THUMB2-PIC-NEXT: .Ltmp0:
190+
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_0+4)-.Ltmp0)
191+
; THUMB2-PIC-NEXT: .LCPI0_1:
192+
; THUMB2-PIC-NEXT: .Ltmp1:
193+
; THUMB2-PIC-NEXT: .long __stack_chk_guard(GOT_PREL)-((.LPC0_1+4)-.Ltmp1)
45194
%a1 = alloca [256 x i32], align 4
46195
call void @foo(ptr %a1) #3
47196
ret i32 0

0 commit comments

Comments
 (0)