90 lines · plain
1; RUN: llc --force-dwarf-frame-section %s -o - | FileCheck %s2target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"3target triple = "thumbv7m-arm-none-eabi"4 5; -Oz6; volatile int a, b, c, d, e, f;7;8; int x() {9; int r = a + b + c + d + e + f;10; return r + 1;11; }12;13; int y() {14; int r = a + b + c + d + e + f;15; return r + 2;16; }17 18@a = hidden global i32 0, align 419@b = hidden global i32 0, align 420@c = hidden global i32 0, align 421@d = hidden global i32 0, align 422@e = hidden global i32 0, align 423@f = hidden global i32 0, align 424 25define hidden i32 @x() local_unnamed_addr #0 {26entry:27 %0 = load volatile i32, ptr @a, align 428 %1 = load volatile i32, ptr @b, align 429 %2 = load volatile i32, ptr @c, align 430 %3 = load volatile i32, ptr @d, align 431 %4 = load volatile i32, ptr @e, align 432 %5 = load volatile i32, ptr @f, align 433 %add = add i32 %0, 134 %add1 = add i32 %add, %135 %add2 = add i32 %add1, %236 %add3 = add i32 %add2, %337 %add4 = add i32 %add3, %438 %add5 = add i32 %add4, %539 ret i32 %add540}41; CHECK-LABEL: x:42; CHECK: ldr r{{.*}}, .LCPI0_043; CHECK-NEXT: mov r[[A:[0-9]*]], lr44; CHECK-NEXT: .cfi_register lr, r[[A]]45; CHECK-NEXT: bl OUTLINED_FUNCTION_046; CHECK-NEXT: mov lr, r[[A]]47; CHECK-NEXT: .cfi_restore lr48; CHECK-NEXT: adds r0, #149; CHECK-NEXT: bx lr50 51define hidden i32 @y() local_unnamed_addr #0 {52entry:53 %0 = load volatile i32, ptr @a, align 454 %1 = load volatile i32, ptr @b, align 455 %2 = load volatile i32, ptr @c, align 456 %3 = load volatile i32, ptr @d, align 457 %4 = load volatile i32, ptr @e, align 458 %5 = load volatile i32, ptr @f, align 459 %add = add i32 %0, 260 %add1 = add i32 %add, %161 %add2 = add i32 %add1, %262 %add3 = add i32 %add2, %363 %add4 = add i32 %add3, %464 %add5 = add i32 %add4, %565 ret i32 %add566}67; CHECK-LABEL: y:68; CHECK: ldr r{{.*}}, .LCPI1_069; CHECK-NEXT: mov r[[B:[0-9]*]], lr70; CHECK-NEXT: .cfi_register lr, r[[B]]71; CHECK-NEXT: bl OUTLINED_FUNCTION_072; CHECK-NEXT: mov lr, r[[B]]73; CHECK-NEXT: .cfi_restore lr74; CHECK-NEXT: adds r0, #275; CHECK-NEXT: bx lr76 77; CHECK-LABEL: OUTLINED_FUNCTION_0:78; CHECK-NOT: pac79; CHECK-NOT: aut80; CHECK-NOT: r1281; CHECK: bx lr82 83attributes #0 = { minsize nofree norecurse nounwind optsize}84 85!llvm.module.flags = !{!0, !1, !2}86 87!0 = !{i32 8, !"branch-target-enforcement", i32 0}88!1 = !{i32 8, !"sign-return-address", i32 1}89!2 = !{i32 8, !"sign-return-address-all", i32 0}90