91 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=x86_64-apple-unknown -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s3 4# Outlining CFI instructions is unsafe if we cannot outline all of the CFI5# instructions from a function. This shows that we choose not to outline the6# CFI instructions since function foo has a CFI Instruction that would not7# be caught.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---16name: foo17tracksRegLiveness: true18body: |19 bb.0:20 ; CHECK-LABEL: name: foo21 ; CHECK: CFI_INSTRUCTION def_cfa_offset 1622 ; CHECK: CFI_INSTRUCTION offset $rbp, -1623 ; CHECK: CFI_INSTRUCTION def_cfa_register $rbp24 ; CHECK: CALL64pcrel32 @OUTLINED_FUNCTION_1, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $ebx, implicit-def $ecx, implicit $rsp, implicit $ssp25 ; CHECK: CFI_INSTRUCTION def_cfa_offset 1626 ; CHECK: CFI_INSTRUCTION offset $rbp, -1627 ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp28 ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp29 CFI_INSTRUCTION def_cfa_offset 1630 CFI_INSTRUCTION offset $rbp, -1631 CFI_INSTRUCTION def_cfa_register $rbp32 $eax = MOV32ri 133 $ebx = MOV32ri 234 $ecx = MOV32ri 335 CFI_INSTRUCTION def_cfa_offset 1636 CFI_INSTRUCTION offset $rbp, -1637 CFI_INSTRUCTION def_cfa_register $rsp38 $esi = MOV32ri 139 $edx = MOV32ri 240 $edi = MOV32ri 341 $eax = MOV32ri 442 RET6443...44---45name: bar46tracksRegLiveness: true47body: |48 bb.0:49 ;liveins: $lr50 ; CHECK-LABEL: name: bar51 ; CHECK: CALL64pcrel32 @OUTLINED_FUNCTION_1, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $ebx, implicit-def $ecx, implicit $rsp, implicit $ssp52 ; CHECK: CFI_INSTRUCTION def_cfa_offset 1653 ; CHECK: CFI_INSTRUCTION offset $rbp, -1654 ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp55 ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp56 $eax = MOV32ri 157 $ebx = MOV32ri 258 $ecx = MOV32ri 359 CFI_INSTRUCTION def_cfa_offset 1660 CFI_INSTRUCTION offset $rbp, -1661 CFI_INSTRUCTION def_cfa_register $rsp62 $esi = MOV32ri 163 $edx = MOV32ri 264 $edi = MOV32ri 365 $eax = MOV32ri 466 RET6467...68---69name: baz70tracksRegLiveness: true71body: |72 bb.0:73 ;liveins: $lr74 ; CHECK-LABEL: name: baz75 ; CHECK: CALL64pcrel32 @OUTLINED_FUNCTION_1, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $ebx, implicit-def $ecx, implicit $rsp, implicit $ssp76 ; CHECK: CFI_INSTRUCTION def_cfa_offset 1677 ; CHECK: CFI_INSTRUCTION offset $rbp, -1678 ; CHECK: CFI_INSTRUCTION def_cfa_register $rsp79 ; CHECK: TAILJMPd64 @OUTLINED_FUNCTION_0, implicit $rsp, implicit $ssp, implicit-def $eax, implicit-def $edi, implicit-def $edx, implicit-def $esi, implicit $rsp, implicit $ssp80 $eax = MOV32ri 181 $ebx = MOV32ri 282 $ecx = MOV32ri 383 CFI_INSTRUCTION def_cfa_offset 1684 CFI_INSTRUCTION offset $rbp, -1685 CFI_INSTRUCTION def_cfa_register $rsp86 $esi = MOV32ri 187 $edx = MOV32ri 288 $edi = MOV32ri 389 $eax = MOV32ri 490 RET6491