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