82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --force-dwarf-frame-section %s -o - | FileCheck %s3; RUN: llc --filetype=obj %s -o - | llvm-readelf --unwind - | FileCheck %s --check-prefix=UNWIND4target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"5target triple = "thumbv8.1m.main-arm-none-eabi"6 7; int g(int, int *);8;9; int f() {10; __attribute__((aligned(32))) int a[4];11; g(4, a);12; int s = 0;13; for (int i = 0; i < 4; ++i)14; s += a[i];15; return s;16; }17 18define hidden i32 @_Z1fv() local_unnamed_addr "sign-return-address"="non-leaf" {19; CHECK-LABEL: _Z1fv:20; CHECK: .cfi_sections .debug_frame21; CHECK-NEXT: .cfi_startproc22; CHECK-NEXT: @ %bb.0: @ %entry23; CHECK-NEXT: pac r12, lr, sp24; CHECK-NEXT: .save {r4, r6, r7, ra_auth_code, lr}25; CHECK-NEXT: push.w {r4, r6, r7, r12, lr}26; CHECK-NEXT: .cfi_def_cfa_offset 2027; CHECK-NEXT: .cfi_offset lr, -428; CHECK-NEXT: .cfi_offset ra_auth_code, -829; CHECK-NEXT: .cfi_offset r7, -1230; CHECK-NEXT: .cfi_offset r6, -1631; CHECK-NEXT: .cfi_offset r4, -2032; CHECK-NEXT: .setfp r7, sp, #833; CHECK-NEXT: add r7, sp, #834; CHECK-NEXT: .cfi_def_cfa r7, 1235; CHECK-NEXT: .pad #4436; CHECK-NEXT: sub sp, #4437; CHECK-NEXT: mov r4, sp38; CHECK-NEXT: bfc r4, #0, #539; CHECK-NEXT: mov sp, r440; CHECK-NEXT: mov r1, sp41; CHECK-NEXT: movs r0, #442; CHECK-NEXT: bl _Z1giPi43; CHECK-NEXT: ldm.w sp, {r0, r1, r2, r3}44; CHECK-NEXT: sub.w r4, r7, #845; CHECK-NEXT: add r0, r146; CHECK-NEXT: add r0, r247; CHECK-NEXT: add r0, r348; CHECK-NEXT: mov sp, r449; CHECK-NEXT: pop.w {r4, r6, r7, r12, lr}50; CHECK-NEXT: aut r12, lr, sp51; CHECK-NEXT: bx lr52entry:53 %a = alloca [4 x i32], align 3254 %call = call i32 @_Z1giPi(i32 4, ptr nonnull %a)55 %0 = load i32, ptr %a, align 3256 %arrayidx.1 = getelementptr inbounds [4 x i32], ptr %a, i32 0, i32 157 %1 = load i32, ptr %arrayidx.1, align 458 %add.1 = add nsw i32 %1, %059 %arrayidx.2 = getelementptr inbounds [4 x i32], ptr %a, i32 0, i32 260 %2 = load i32, ptr %arrayidx.2, align 861 %add.2 = add nsw i32 %2, %add.162 %arrayidx.3 = getelementptr inbounds [4 x i32], ptr %a, i32 0, i32 363 %3 = load i32, ptr %arrayidx.3, align 464 %add.3 = add nsw i32 %3, %add.265 ret i32 %add.366}67 68declare dso_local i32 @_Z1giPi(i32, ptr) local_unnamed_addr69 70!llvm.module.flags = !{!0, !1, !2}71 72!0 = !{i32 8, !"branch-target-enforcement", i32 0}73!1 = !{i32 8, !"sign-return-address", i32 1}74!2 = !{i32 8, !"sign-return-address-all", i32 0}75 76; UNWIND-LABEL: FunctionAddress: 0x077; UNWIND: 0x97 ; vsp = r778; UNWIND-NEXT: 0x41 ; vsp = vsp - 879; UNWIND-NEXT: 0x80 0x0D ; pop {r4, r6, r7}80; UNWIND-NEXT: 0xB4 ; pop ra_auth_code81; UNWIND-NEXT: 0x84 0x00 ; pop {lr}82