brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 9a983cb Raw
132 lines · plain
1# RUN: llc -mtriple=aarch64 -run-pass=prologepilog -run-pass=machine-outliner \2# RUN: -verify-machineinstrs -run-pass=aarch64-ptrauth %s -o - | FileCheck %s3 4# Check that we save LR to a callee-saved register when possible.5# foo() should use a callee-saved register. However, bar() should not.6--- |7 8  define void @foo() #0 {9    ret void10  }11 12  define void @bar() #1 {13    ret void14  }15 16  attributes #0 = { nounwind         "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" minsize noinline noredzone "frame-pointer"="all" }17  attributes #1 = { nounwind uwtable "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" minsize noinline noredzone "frame-pointer"="all" }18...19---20# CHECK-LABEL:   name:            foo21# CHECK:         bb.0:22# CHECK:            frame-setup EMITBKEY23# CHECK-NEXT:       frame-setup PACIBSP24# CHECK-NOT:        frame-setup CFI_INSTRUCTION negate_ra_sign_state25# CHECK:        bb.1:26# CHECK:            BL @[[OUTLINED_FUNCTION:OUTLINED_FUNCTION_[0-9]+]]27# CHECK:        bb.2:28# CHECK:            BL @[[OUTLINED_FUNCTION]]29# CHECK:        bb.3:30# CHECK:            BL @[[OUTLINED_FUNCTION]]31# CHECK:        bb.4:32# CHECK:            BL @[[OUTLINED_FUNCTION]]33# CHECK:        bb.5:34# CHECK:            frame-destroy AUTIBSP35# CHECK-NEXT:       RET36name:            foo37tracksRegLiveness: true38fixedStack:39body:             |40  bb.0:41    $x25 = ORRXri $xzr, 142    $lr = ORRXri $xzr, 143  bb.1:44    liveins: $lr, $w945    $w9 = ORRWri $wzr, 146    $w9 = ORRWri $wzr, 147    $w9 = ORRWri $wzr, 148    $w9 = ORRWri $wzr, 149    $w9 = ORRWri $wzr, 150    $w9 = ORRWri $wzr, 251  bb.2:52    liveins: $lr, $w953    $w9 = ORRWri $wzr, 154    $w9 = ORRWri $wzr, 155    $w9 = ORRWri $wzr, 156    $w9 = ORRWri $wzr, 157    $w9 = ORRWri $wzr, 158    $w9 = ORRWri $wzr, 259  bb.3:60    liveins: $lr, $w961    $w9 = ORRWri $wzr, 162    $w9 = ORRWri $wzr, 163    $w9 = ORRWri $wzr, 164    $w9 = ORRWri $wzr, 165    $w9 = ORRWri $wzr, 166    $w9 = ORRWri $wzr, 267  bb.4:68    liveins: $lr, $w969    $w9 = ORRWri $wzr, 170    $w9 = ORRWri $wzr, 171    $w9 = ORRWri $wzr, 172    $w9 = ORRWri $wzr, 173    $w9 = ORRWri $wzr, 174    $w9 = ORRWri $wzr, 275  bb.5:76    liveins: $w977    RET undef $lr78 79...80---81# CHECK:         name:            bar82# CHECK:          bb.0:83# CHECK:            frame-setup EMITBKEY84# CHECK-NEXT:       frame-setup PACIBSP implicit-def $lr, implicit $lr, implicit $sp85# CHECK-NEXT:       frame-setup CFI_INSTRUCTION negate_ra_sign_state86# CHECK-NOT:        OUTLINED_FUNCTION_87# CHECK:          bb.1:88# CHECK-NOT:        OUTLINED_FUNCTION_89# CHECK:          bb.2:90# CHECK-NOT:        OUTLINED_FUNCTION_91# CHECK:          bb.3:92# CHECK-NOT:        OUTLINED_FUNCTION_93# CHECK:            RET94name:            bar95tracksRegLiveness: true96body:             |97  bb.0:98    liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x2899    $w10 = ORRWri $wzr, 1100    $w10 = ORRWri $wzr, 1101    $w10 = ORRWri $wzr, 1102    $w10 = ORRWri $wzr, 1103    $w10 = ORRWri $wzr, 1104    $w12 = ORRWri $wzr, 2105  bb.1:106    liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28107    $w10 = ORRWri $wzr, 1108    $w10 = ORRWri $wzr, 1109    $w10 = ORRWri $wzr, 1110    $w10 = ORRWri $wzr, 1111    $w10 = ORRWri $wzr, 1112    $w12 = ORRWri $wzr, 2113  bb.2:114    liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28115    $w10 = ORRWri $wzr, 1116    $w10 = ORRWri $wzr, 1117    $w10 = ORRWri $wzr, 1118    $w10 = ORRWri $wzr, 1119    $w10 = ORRWri $wzr, 1120    $w12 = ORRWri $wzr, 2121  bb.3:122    liveins: $lr, $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x19, $x20, $x21, $x22, $x23, $x20, $x21, $x22, $x23, $x24, $x25, $x26, $x27, $x28123    RET undef $lr124 125# CHECK:         name:            [[OUTLINED_FUNCTION]]126# CHECK:         body:127# CHECK-NEXT:     bb.0:128# CHECK-NOT:        frame-setup EMITBKEY129# CHECK-NOT:        frame-setup PACI{{[A,B]}}SP130# CHECK-NOT:        frame-setup CFI_INSTRUCTION negate_ra_sign_state131# CHECK-NOT:        frame-destroy AUTI{{[A,B]}}SP132