brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 05236b0 Raw
83 lines · plain
1; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple \2; RUN: aarch64-arm-linux-gnu %s -o - | FileCheck %s3 4; Check that outlined functions use the dedicated RETAA/RETAB instructions5; to sign their return address if available.6 7define void @a() #0 {8; CHECK-LABEL:      a:                                     // @a9; CHECK:            // %bb.0:10; CHECK-NEXT:               pacibsp11; CHECK:                    bl [[OUTLINED_FUNC:OUTLINED_FUNCTION_[0-9]+]]12  %1 = alloca i32, align 413  %2 = alloca i32, align 414  %3 = alloca i32, align 415  %4 = alloca i32, align 416  %5 = alloca i32, align 417  %6 = alloca i32, align 418  store i32 1, ptr %1, align 419  store i32 2, ptr %2, align 420  store i32 3, ptr %3, align 421  store i32 4, ptr %4, align 422  store i32 5, ptr %5, align 423  store i32 6, ptr %6, align 424; CHECK-NOT:              auti{{[a,b]}}sp25; CHECK:                  retab26  ret void27}28 29define void @b() #0 {30; CHECK-LABEL:      b:                                     // @b31; CHECK:            // %bb.0:32; CHECK-NEXT:               pacibsp33; CHECK:                    bl OUTLINED_FUNC34  %1 = alloca i32, align 435  %2 = alloca i32, align 436  %3 = alloca i32, align 437  %4 = alloca i32, align 438  %5 = alloca i32, align 439  %6 = alloca i32, align 440  store i32 1, ptr %1, align 441  store i32 2, ptr %2, align 442  store i32 3, ptr %3, align 443  store i32 4, ptr %4, align 444  store i32 5, ptr %5, align 445  store i32 6, ptr %6, align 446; CHECK-NOT:              auti{{[a,b]}}sp47; CHECK:                  retab48  ret void49}50 51define void @c() #0 {52; CHECK-LABEL:      c:                                     // @c53; CHECK:            // %bb.0:54; CHECK-NEXT:               pacibsp55; CHECK:                    bl OUTLINED_FUNC56  %1 = alloca i32, align 457  %2 = alloca i32, align 458  %3 = alloca i32, align 459  %4 = alloca i32, align 460  %5 = alloca i32, align 461  %6 = alloca i32, align 462  store i32 1, ptr %1, align 463  store i32 2, ptr %2, align 464  store i32 3, ptr %3, align 465  store i32 4, ptr %4, align 466  store i32 5, ptr %5, align 467  store i32 6, ptr %6, align 468; CHECK-NOT:              auti{{[a,b]}}sp69; CHECK:                  retab70  ret void71}72 73attributes #0 = { "sign-return-address"="all"74                  "sign-return-address-key"="b_key"75                  "target-features"="+v8.3a"76                  nounwind }77 78; CHECK:            OUTLINED_FUNC79; CHECK:            // %bb.0:80; CHECK-NEXT:               pacibsp81; CHECK-NOT:                auti{{[a,b]}}sp82; CHECK:                    retab83