xref: /llvm-project/llvm/test/CodeGen/ARM/stack-guard-nomovt.ll (revision 2e47b93fd29ad6ef13a4134f3b0be3c42e91180c)
1*2e47b93fSArd Biesheuvel; RUN: llc -relocation-model=static -mattr=+no-movt < %s | FileCheck %s
2*2e47b93fSArd Biesheuvel
3*2e47b93fSArd Biesheuveltarget triple = "thumbv7a-linux-gnueabi"
4*2e47b93fSArd Biesheuvel
5*2e47b93fSArd Biesheuveldefine i32 @test1() #0 {
6*2e47b93fSArd Biesheuvel; CHECK-LABEL: test1:
7*2e47b93fSArd Biesheuvel; CHECK:       @ %bb.0:
8*2e47b93fSArd Biesheuvel; CHECK-NEXT:    push	{r7, lr}
9*2e47b93fSArd Biesheuvel; CHECK-NEXT:    sub.w	sp, sp, #1032
10*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ldr	r0, .LCPI0_0
11*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ldr	r0, [r0]
12*2e47b93fSArd Biesheuvel; CHECK-NEXT:    str.w	r0, [sp, #1028]
13*2e47b93fSArd Biesheuvel; CHECK-NEXT:    add	r0, sp, #4
14*2e47b93fSArd Biesheuvel; CHECK-NEXT:    bl	foo
15*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ldr.w	r0, [sp, #1028]
16*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ldr	r1, .LCPI0_0
17*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ldr	r1, [r1]
18*2e47b93fSArd Biesheuvel; CHECK-NEXT:    cmp	r1, r0
19*2e47b93fSArd Biesheuvel; CHECK-NEXT:    ittt	eq
20*2e47b93fSArd Biesheuvel; CHECK-NEXT:    moveq	r0, #0
21*2e47b93fSArd Biesheuvel; CHECK-NEXT:    addeq.w	sp, sp, #1032
22*2e47b93fSArd Biesheuvel; CHECK-NEXT:    popeq	{r7, pc}
23*2e47b93fSArd Biesheuvel; CHECK-NEXT:  .LBB0_1:
24*2e47b93fSArd Biesheuvel; CHECK-NEXT:    bl __stack_chk_fail
25*2e47b93fSArd Biesheuvel  %a1 = alloca [256 x i32], align 4
26*2e47b93fSArd Biesheuvel  call void @foo(ptr %a1) #3
27*2e47b93fSArd Biesheuvel  ret i32 0
28*2e47b93fSArd Biesheuvel}
29*2e47b93fSArd Biesheuvel
30*2e47b93fSArd Biesheuveldeclare void @foo(ptr)
31*2e47b93fSArd Biesheuvel
32*2e47b93fSArd Biesheuvelattributes #0 = { nounwind sspstrong }
33