brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 4bbbe40 Raw
89 lines · plain
1; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 %s -o - | \2; RUN:   FileCheck %s --check-prefixes CHECK,V8A3; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 -mattr=+v8.3a %s -o - | \4; RUN:   FileCheck %s --check-prefixes CHECK,V83A5 6;; Function a's outlining candidate contains a sp modifying add without a7;; corresponsing sub, so we shouldn't outline it.8define void @a() "sign-return-address"="all" "sign-return-address-key"="b_key" {9; CHECK-LABEL:         a:                     // @a10; CHECK:               // %bb.0:11; CHECK-NEXT:          .cfi_b_key_frame12; V8A-NEXT:            hint #2713; V83A-NEXT:           pacibsp14; CHECK-NEXT:          .cfi_negate_ra_state15  %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:          bl OUTLINED_FUNCTION_{{[0-9]+}}28; V8A:                hint #3129; V8A-NEXT:           ret30; V83A:               retab31  ret void32}33 34define void @b() "sign-return-address"="all" "sign-return-address-key"="b_key" nounwind {35; CHECK-LABEL:      b:                                     // @b36; CHECK-NEXT:       // %bb.0:37; V8A-NEXT:         hint #2738; V83A-NEXT:        pacibsp39  %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:                bl [[OUTLINED_FUNC:OUTLINED_FUNCTION_[0-9]+]]52; V8A:                  hint #3153; V8A-NEXT:             ret54; V83A:                 retab55  ret void56}57 58define void @c() "sign-return-address"="all" "sign-return-address-key"="b_key" nounwind {59; CHECK-LABEL:      c:                                     // @c60; CHECK-NEXT:       // %bb.0:61; V8A-NEXT:         hint #2762; V83A-NEXT:        pacibsp63  %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:                bl [[OUTLINED_FUNC]]76; V8A:                  hint #3177; V8A-NEXT:             ret78; V83A:                 retab79  ret void80}81 82; CHECK:            [[OUTLINED_FUNC]]83; CHECK:            // %bb.0:84; V8A-NEXT:             hint #2785; V83A-NEXT:            pacibsp86; V8A:                  hint #3187; V8A-NEXT:             ret88; V83A:                 retab89