xref: /llvm-project/llvm/test/CodeGen/AArch64/machine-outliner-cfi.mir (revision 0ff51d5dde29dfd9bc5064e32d47345bab7a5034)
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