]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/DebugInfo/AArch64/cfi-frame.ll
Vendor import of llvm RELEASE_34/dot1-final tag r208032 (effectively, 3.4.1 release):
[FreeBSD/FreeBSD.git] / test / DebugInfo / AArch64 / cfi-frame.ll
1 ; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s
2 ; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu -disable-fp-elim < %s | FileCheck %s --check-prefix=CHECK-WITH-FP
3
4 @bigspace = global [8 x i64] zeroinitializer
5
6 declare void @use_addr(i8*)
7
8 define void @test_frame([8 x i64] %val) {
9 ; CHECK: test_frame:
10 ; CHECK: .cfi_startproc
11
12   %var = alloca i8, i32 1000000
13 ; CHECK: sub sp, sp, #[[SP_INIT_ADJ:[0-9]+]]
14 ; CHECK-NEXT: .Ltmp
15 ; CHECK-NEXT: .cfi_def_cfa sp, [[SP_INIT_ADJ]]
16
17 ; Make sure the prologue is reasonably efficient
18 ; CHECK-NEXT: stp x29, x30, [sp,
19 ; CHECK-NEXT: stp x25, x26, [sp,
20 ; CHECK-NEXT: stp x23, x24, [sp,
21 ; CHECK-NEXT: stp x21, x22, [sp,
22 ; CHECK-NEXT: stp x19, x20, [sp,
23 ; CHECK-NEXT: sub sp, sp, #160
24 ; CHECK-NEXT: sub sp, sp, #244, lsl #12
25 ; CHECK-NEXT: .Ltmp
26 ; CHECK-NEXT: .cfi_def_cfa sp, 1000080
27 ; CHECK-NEXT: .Ltmp
28 ; CHECK-NEXT: .cfi_offset x30, -8
29 ; CHECK-NEXT: .Ltmp
30 ; CHECK-NEXT: .cfi_offset x29, -16
31 ; [...]
32 ; CHECK: .cfi_offset x19, -80
33
34 ; CHECK: bl use_addr
35   call void @use_addr(i8* %var)
36
37   store [8 x i64] %val, [8 x i64]* @bigspace
38   ret void
39 ; CHECK: ret
40 ; CHECK: .cfi_endproc
41 }
42
43 ; CHECK-WITH-FP: test_frame:
44
45 ; CHECK-WITH-FP: sub sp, sp, #[[SP_INIT_ADJ:[0-9]+]]
46 ; CHECK-WITH-FP-NEXT: .Ltmp
47 ; CHECK-WITH-FP-NEXT: .cfi_def_cfa sp, [[SP_INIT_ADJ]]
48
49 ; CHECK-WITH-FP: stp x29, x30, [sp, [[OFFSET:#[0-9]+]]]
50 ; CHECK-WITH-FP-NEXT: add x29, sp, [[OFFSET]]
51 ; CHECK-WITH-FP-NEXT: .Ltmp
52 ; CHECK-WITH-FP-NEXT: .cfi_def_cfa x29, 16
53
54   ; We shouldn't emit any kind of update for the second stack adjustment if the
55   ; FP is in use.
56 ; CHECK-WITH-FP-NOT: .cfi_def_cfa_offset
57
58 ; CHECK-WITH-FP: bl use_addr