| # RUN: llc -enable-machine-outliner -start-before=aarch64-expand-pseudo -mtriple=arm64-apple-ios -o - %s | FileCheck %s |
| # |
| # The calls to _cb1 & _cb2 should be followed by the marker instruction |
| # 'mov x29, x29' and the attached call. Neither should get outlined. |
| # |
| # CHECK-LABEL: _fn1: |
| # CHECK: bb.0: |
| # CHECK: bl _cb1 |
| # CHECK-NEXT: mov x29, x29 |
| # CHECK-NEXT: bl _attachedcall |
| # CHECK: b _OUTLINED_FUNCTION_0 |
| # |
| # CHECK-LABEL: _fn2: |
| # CHECK: bb.0: |
| # CHECK: bl _cb2 |
| # CHECK-NEXT: mov x29, x29 |
| # CHECK-NEXT: bl _attachedcall |
| # CHECK: b _OUTLINED_FUNCTION_0 |
| # |
| # CHECK-LABEL: _OUTLINED_FUNCTION_0: |
| # CHECK: bb.0: |
| # CHECK-NEXT: orr w12, wzr, #0x3 |
| # CHECK-NEXT: orr w12, wzr, #0x3 |
| # CHECK-NEXT: orr w12, wzr, #0x3 |
| # CHECK-NEXT: orr w12, wzr, #0x3 |
| # CHECK-NEXT: ret |
| |
| --- | |
| target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" |
| target triple = "arm64-apple-ios" |
| |
| define void @fn1() { |
| ret void |
| } |
| |
| define void @fn2() { |
| ret void |
| } |
| |
| declare void @cb1() |
| |
| declare void @cb2() |
| |
| declare i8* @attachedcall() |
| ... |
| --- |
| name: fn1 |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| hasRedZone: false |
| body: | |
| bb.0: |
| liveins: $lr |
| |
| BLR_RVMARKER @attachedcall, @cb1, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $lr = ORRXri $xzr, 1 |
| |
| RET undef $lr |
| ... |
| --- |
| name: fn2 |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| hasRedZone: false |
| body: | |
| bb.0: |
| liveins: $lr, $x19, $x20, $lr |
| |
| BLR_RVMARKER @attachedcall, @cb2, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def $x0 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $w12 = ORRWri $wzr, 1 |
| $lr = ORRXri $xzr, 1 |
| |
| RET undef $lr |
| ... |