Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / X86 / machine-outliner-cfi-tail.mir
blobf18f62419a0d10497404f49be423975d0df11ab8
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-apple-unknown -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s
4 # Outlining CFI instructions is unsafe if we cannot outline all of the CFI
5 # instructions from a function.  This shows that we choose to outline the
6 # CFI instructions if they can be included in a tail call.
8 --- |
9   define void @foo() #0 { ret void }
10   define void @bar() #0 { ret void }
11   define void @baz() #0 { ret void }
12   attributes #0 = { noredzone }
13 ...
14 ---
15 name:            foo
16 tracksRegLiveness: true
17 body:             |
18   bb.0:
19     ; CHECK-LABEL: name: foo
20     ; CHECK: $ecx = MOV32ri 3
21     ; CHECK: CFI_INSTRUCTION def_cfa_offset 16
22     ; CHECK: CFI_INSTRUCTION offset $rbp, -16
23     ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp
24     ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp
25     $ecx =  MOV32ri 3
26     CFI_INSTRUCTION def_cfa_offset 16
27     CFI_INSTRUCTION offset $rbp, -16
28     CFI_INSTRUCTION def_cfa_register $rsp
29     $esi = MOV32ri 1
30     $edx = MOV32ri 2
31     $edi = MOV32ri 3
32     $eax = MOV32ri 4
33     RET64
34 ...
35 ---
36 name:            bar
37 tracksRegLiveness: true
38 body:             |
39   bb.0:
40   ;liveins: $lr
41     ; CHECK-LABEL: name: bar
42     ; CHECK: $ecx = MOV32ri 3
43     ; CHECK: CFI_INSTRUCTION def_cfa_offset 16
44     ; CHECK: CFI_INSTRUCTION offset $rbp, -16
45     ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp
46     ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp
47     $ecx =  MOV32ri 3
48     CFI_INSTRUCTION def_cfa_offset 16
49     CFI_INSTRUCTION offset $rbp, -16
50     CFI_INSTRUCTION def_cfa_register $rsp
51     $esi = MOV32ri 1
52     $edx = MOV32ri 2
53     $edi = MOV32ri 3
54     $eax = MOV32ri 4
55     RET64
56 ...
57 ---
58 name:            baz
59 tracksRegLiveness: true
60 body:             |
61   bb.0:
62   ;liveins: $lr
63     ; CHECK-LABEL: name: baz
64     ; CHECK: $ecx = MOV32ri 3
65     ; CHECK: CFI_INSTRUCTION def_cfa_offset 16
66     ; CHECK: CFI_INSTRUCTION offset $rbp, -16
67     ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp
68     ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp
69     $ecx =  MOV32ri 3
70     CFI_INSTRUCTION def_cfa_offset 16
71     CFI_INSTRUCTION offset $rbp, -16
72     CFI_INSTRUCTION def_cfa_register $rsp
73     $esi = MOV32ri 1
74     $edx = MOV32ri 2
75     $edi = MOV32ri 3
76     $eax = MOV32ri 4
77     RET64