73 lines · plain
1# RUN: llc -mtriple=aarch64--- -run-pass=machine-outliner \2# RUN: -verify-machineinstrs %s -o - | FileCheck %s3 4# Ensure that we never outline calls into sequences where unsafe stack5# instructions are present.6 7--- |8 define void @foo() #0 { ret void }9 define void @bar() #0 { ret void }10 define void @baz() #0 { ret void }11 define void @f1() #0 { ret void }12 define void @f2() #0 { ret void }13 attributes #0 = { minsize noinline noredzone "frame-pointer"="all" }14...15---16 17name: f118tracksRegLiveness: true19body: |20 bb.0:21 liveins: $lr22 ; CHECK-LABEL: name: f123 ; CHECK: foo24 ; CHECK-DAG: bar25 ; CHECK-DAG: baz26 $lr = ORRXri $xzr, 127 BL @foo, implicit-def dead $lr, implicit $sp28 $x20, $x19 = LDPXi $sp, 6329 $x20, $x19 = LDPXi $sp, 6330 $x20, $x19 = LDPXi $sp, 6331 $x20, $x19 = LDPXi $sp, 6332 bb.1:33 BL @bar, implicit-def dead $lr, implicit $sp34 $x11 = ADDXri $sp, 48, 0;35 $x12 = ADDXri $sp, 48, 0;36 $x13 = ADDXri $sp, 48, 0;37 $x14 = ADDXri $sp, 48, 0;38 bb.2:39 BL @baz, implicit-def dead $lr, implicit $sp40 $x0 = ADDXri $sp, 48, 0;41 $x1 = ADDXri $sp, 48, 0;42 RET undef $lr43 44...45---46 47name: f248tracksRegLiveness: true49body: |50 bb.0:51 liveins: $lr52 ; CHECK-LABEL: name: f253 ; CHECK: foo54 ; CHECK-DAG: bar55 ; CHECK-DAG: baz56 $lr = ORRXri $xzr, 157 BL @foo, implicit-def dead $lr, implicit $sp58 $x20, $x19 = LDPXi $sp, 6359 $x20, $x19 = LDPXi $sp, 6360 $x20, $x19 = LDPXi $sp, 6361 $x20, $x19 = LDPXi $sp, 6362 bb.1:63 BL @bar, implicit-def dead $lr, implicit $sp64 $x11 = ADDXri $sp, 48, 0;65 $x12 = ADDXri $sp, 48, 0;66 $x13 = ADDXri $sp, 48, 0;67 $x14 = ADDXri $sp, 48, 0;68 bb.2:69 BL @baz, implicit-def dead $lr, implicit $sp70 $x0 = ADDXri $sp, 48, 0;71 $x1 = ADDXri $sp, 48, 0;72 RET undef $lr73