brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · a7ea329 Raw
88 lines · plain
1; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple \2; RUN: aarch64-arm-linux-gnu %s -o - | FileCheck %s3 4; Check that functions that should sign their return addresses don't get5; outlined if not all of the function either support v8.3a features or all of6; the functions don't!!7 8define void @a() #0 {9; CHECK-LABEL:      a:                                     // @a10; CHECK:            // %bb.0:11; CHECK-NEXT:               .cfi_b_key_frame12; CHECK-NEXT:               pacibsp13; CHECK-NEXT:               .cfi_negate_ra_state14; CHECK-NOT:                OUTLINED_FUNCTION_15  %1 = alloca i32, align 416  %2 = alloca i32, align 417  %3 = alloca i32, align 418  %4 = alloca i32, align 419  %5 = alloca i32, align 420  %6 = alloca i32, align 421  store i32 1, ptr %1, align 422  store i32 2, ptr %2, align 423  store i32 3, ptr %3, align 424  store i32 4, ptr %4, align 425  store i32 5, ptr %5, align 426  store i32 6, ptr %6, align 427; CHECK-NOT:              auti{{[a,b]}}sp28; CHECK:                  retab29  ret void30}31 32define void @b() #0 {33; CHECK-LABEL:      b:                                     // @b34; CHECK:            // %bb.0:35; CHECK-NEXT:               .cfi_b_key_frame36; CHECK-NEXT:               pacibsp37; CHECK-NEXT:               .cfi_negate_ra_state38; CHECK-NOT:                OUTLINED_FUNCTION_39  %1 = alloca i32, align 440  %2 = alloca i32, align 441  %3 = alloca i32, align 442  %4 = alloca i32, align 443  %5 = alloca i32, align 444  %6 = alloca i32, align 445  store i32 1, ptr %1, align 446  store i32 2, ptr %2, align 447  store i32 3, ptr %3, align 448  store i32 4, ptr %4, align 449  store i32 5, ptr %5, align 450  store i32 6, ptr %6, align 451; CHECK-NOT:              auti{{[a,b]}}sp52; CHECK:                  retab53  ret void54}55 56define void @c() #1 {57; CHECK-LABEL:      c:                                     // @c58; CHECK:            // %bb.0:59; CHECK-NEXT:               .cfi_b_key_frame60; CHECK-NEXT:               hint #2761; CHECK-NEXT:               .cfi_negate_ra_state62; CHECK-NOT:                OUTLINED_FUNCTION_63  %1 = alloca i32, align 464  %2 = alloca i32, align 465  %3 = alloca i32, align 466  %4 = alloca i32, align 467  %5 = alloca i32, align 468  %6 = alloca i32, align 469  store i32 1, ptr %1, align 470  store i32 2, ptr %2, align 471  store i32 3, ptr %3, align 472  store i32 4, ptr %4, align 473  store i32 5, ptr %5, align 474  store i32 6, ptr %6, align 475; CHECK:                  hint #3176; CHECK-NOT:              ret{{[a,b]}}77  ret void78}79 80attributes #0 = { "sign-return-address"="all"81                  "sign-return-address-key"="b_key"82                  "target-features"="+v8.3a" }83 84attributes #1 = { "sign-return-address"="all"85                  "sign-return-address-key"="b_key" }86 87; CHECK-NOT:                OUTLINED_FUNCTION_88