1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/CodeGen/AArch64/machine-outliner-cfi.mir
Andrew Litteken c5eb58bb14 fix to outline cfi instruction when can be grouped in a tail call
[MachineOutliner] fix test for excluding CFI and add test to include CFI in outlining

New test to check that we only outline CFI instruction if all CFI
Instructions in the function would be captured by the outlining

adding x86 tests analagous to AARCH64 cfi tests

Revision: https://reviews.llvm.org/D77852
2020-04-17 22:26:34 -07:00

88 lines
2.8 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64-apple-unknown -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s
# Outlining CFI instructions is unsafe if it is not tail called, but otherwise,
# it requires fixups. Show that we don't include CFI instructions in non
# tail call outlined sequences right now.
--- |
define void @foo() #0 { ret void }
define void @bar() #0 { ret void }
define void @baz() #0 { ret void }
attributes #0 = { noredzone }
...
---
name: foo
tracksRegLiveness: true
body: |
bb.0:
liveins: $lr
; CHECK-LABEL: name: foo
; CHECK: liveins: $lr
; CHECK: $w9 = ORRWri $wzr, 1
; CHECK: $w10 = ORRWri $wzr, 2
; CHECK: $w11 = ORRWri $wzr, 3
; CHECK: frame-setup CFI_INSTRUCTION def_cfa $w29, 16
; CHECK: $w20 = ORRWri $wzr, 1
; CHECK: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp
$w9 = ORRWri $wzr, 1
$w10 = ORRWri $wzr, 2
$w11 = ORRWri $wzr, 3
frame-setup CFI_INSTRUCTION def_cfa $w29, 16
$w20 = ORRWri $wzr, 1
$w12 = ORRWri $wzr, 1
$w13 = ORRWri $wzr, 2
$w14 = ORRWri $wzr, 3
$w15 = ORRWri $wzr, 4
RET undef $lr
...
---
name: bar
tracksRegLiveness: true
body: |
bb.0:
liveins: $lr
; CHECK-LABEL: name: bar
; CHECK: liveins: $lr
; CHECK: $w9 = ORRWri $wzr, 1
; CHECK: $w10 = ORRWri $wzr, 2
; CHECK: $w11 = ORRWri $wzr, 3
; CHECK: frame-setup CFI_INSTRUCTION def_cfa $w29, 16
; CHECK: $w21 = ORRWri $wzr, 1
; CHECK: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp
$w9 = ORRWri $wzr, 1
$w10 = ORRWri $wzr, 2
$w11 = ORRWri $wzr, 3
frame-setup CFI_INSTRUCTION def_cfa $w29, 16
$w21 = ORRWri $wzr, 1
$w12 = ORRWri $wzr, 1
$w13 = ORRWri $wzr, 2
$w14 = ORRWri $wzr, 3
$w15 = ORRWri $wzr, 4
RET undef $lr
...
---
name: baz
tracksRegLiveness: true
body: |
bb.0:
liveins: $lr
; CHECK-LABEL: name: baz
; CHECK: liveins: $lr
; CHECK: $w9 = ORRWri $wzr, 1
; CHECK: $w10 = ORRWri $wzr, 2
; CHECK: $w11 = ORRWri $wzr, 3
; CHECK: frame-setup CFI_INSTRUCTION def_cfa $w29, 16
; CHECK: $w22 = ORRWri $wzr, 1
; CHECK: TCRETURNdi @OUTLINED_FUNCTION_0, 0, implicit $sp, implicit-def $w12, implicit-def $w13, implicit-def $w14, implicit-def $w15, implicit $wzr, implicit $sp
$w9 = ORRWri $wzr, 1
$w10 = ORRWri $wzr, 2
$w11 = ORRWri $wzr, 3
frame-setup CFI_INSTRUCTION def_cfa $w29, 16
$w22 = ORRWri $wzr, 1
$w12 = ORRWri $wzr, 1
$w13 = ORRWri $wzr, 2
$w14 = ORRWri $wzr, 3
$w15 = ORRWri $wzr, 4
RET undef $lr