1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64-apple-unknown -run-pass=machine-outliner -verify-machineinstrs -enable-machine-outliner=always %s -o - | FileCheck %s 3 4# Outlining CFI instructions is unsafe if it is not tail called, but otherwise, 5# it requires fixups. Show that we don't include CFI instructions in non 6# tail call outlined sequences right now. Show that we count CFI instructions 7# correctly in the presence of debug info. 8 9--- | 10 define void @foo() #0 { ret void } 11 define void @bar() #0 { ret void } 12 define void @baz() #0 { ret void } 13 attributes #0 = { noredzone } 14 15... 16--- 17name: foo 18tracksRegLiveness: true 19body: | 20 bb.0: 21 liveins: $lr 22 ; CHECK-LABEL: name: foo 23 ; CHECK: liveins: $lr 24 ; CHECK-NEXT: {{ $}} 25 ; CHECK-NEXT: $w9 = ORRWri $wzr, 1 26 ; CHECK-NEXT: $w10 = ORRWri $wzr, 2 27 ; CHECK-NEXT: $w11 = ORRWri $wzr, 3 28 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 29 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 30 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 31 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 32 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 33 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 34 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $w29, 16 35 ; CHECK-NEXT: $w20 = ORRWri $wzr, 1 36 ; CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp 37 $w9 = ORRWri $wzr, 1 38 $w10 = ORRWri $wzr, 2 39 $w11 = ORRWri $wzr, 3 40 DBG_VALUE $w9, $noreg 41 DBG_VALUE $w9, $noreg 42 DBG_VALUE $w9, $noreg 43 DBG_VALUE $w9, $noreg 44 DBG_VALUE $w9, $noreg 45 DBG_VALUE $w9, $noreg 46 frame-setup CFI_INSTRUCTION def_cfa $w29, 16 47 $w20 = ORRWri $wzr, 1 48 $w12 = ORRWri $wzr, 1 49 $w13 = ORRWri $wzr, 2 50 $w14 = ORRWri $wzr, 3 51 $w15 = ORRWri $wzr, 4 52 RET undef $lr 53... 54--- 55name: bar 56tracksRegLiveness: true 57body: | 58 bb.0: 59 liveins: $lr 60 ; CHECK-LABEL: name: bar 61 ; CHECK: liveins: $lr 62 ; CHECK-NEXT: {{ $}} 63 ; CHECK-NEXT: $w9 = ORRWri $wzr, 1 64 ; CHECK-NEXT: $w10 = ORRWri $wzr, 2 65 ; CHECK-NEXT: $w11 = ORRWri $wzr, 3 66 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 67 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 68 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 69 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 70 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 71 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 72 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $w29, 16 73 ; CHECK-NEXT: $w21 = ORRWri $wzr, 1 74 ; CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp 75 $w9 = ORRWri $wzr, 1 76 $w10 = ORRWri $wzr, 2 77 $w11 = ORRWri $wzr, 3 78 DBG_VALUE $w9, $noreg 79 DBG_VALUE $w9, $noreg 80 DBG_VALUE $w9, $noreg 81 DBG_VALUE $w9, $noreg 82 DBG_VALUE $w9, $noreg 83 DBG_VALUE $w9, $noreg 84 frame-setup CFI_INSTRUCTION def_cfa $w29, 16 85 $w21 = ORRWri $wzr, 1 86 $w12 = ORRWri $wzr, 1 87 $w13 = ORRWri $wzr, 2 88 $w14 = ORRWri $wzr, 3 89 $w15 = ORRWri $wzr, 4 90 RET undef $lr 91... 92--- 93name: baz 94tracksRegLiveness: true 95body: | 96 bb.0: 97 liveins: $lr 98 ; CHECK-LABEL: name: baz 99 ; CHECK: liveins: $lr 100 ; CHECK-NEXT: {{ $}} 101 ; CHECK-NEXT: $w9 = ORRWri $wzr, 1 102 ; CHECK-NEXT: $w10 = ORRWri $wzr, 2 103 ; CHECK-NEXT: $w11 = ORRWri $wzr, 3 104 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 105 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 106 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 107 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 108 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 109 ; CHECK-NEXT: DBG_VALUE $w9, $noreg 110 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $w29, 16 111 ; CHECK-NEXT: $w22 = ORRWri $wzr, 1 112 ; CHECK-NEXT: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp 113 $w9 = ORRWri $wzr, 1 114 $w10 = ORRWri $wzr, 2 115 $w11 = ORRWri $wzr, 3 116 DBG_VALUE $w9, $noreg 117 DBG_VALUE $w9, $noreg 118 DBG_VALUE $w9, $noreg 119 DBG_VALUE $w9, $noreg 120 DBG_VALUE $w9, $noreg 121 DBG_VALUE $w9, $noreg 122 frame-setup CFI_INSTRUCTION def_cfa $w29, 16 123 $w22 = ORRWri $wzr, 1 124 $w12 = ORRWri $wzr, 1 125 $w13 = ORRWri $wzr, 2 126 $w14 = ORRWri $wzr, 3 127 $w15 = ORRWri $wzr, 4 128 RET undef $lr 129