llvm-mirror/test/CodeGen/AArch64/machine-outliner-calls.mir
Jessica Paquette ee6b7b1495 [MachineOutliner] Add defs to calls + don't track liveness on outlined functions
This commit makes it so that if you outline a def of some register, then the
call instruction created by the outliner actually reflects that the register
is defined by the call. It also makes it so that outlined functions don't
have the TracksLiveness property.

Outlined calls shouldn't break liveness assumptions that someone might make.

This also un-XFAILs the noredzone test, and updates the calls test.

llvm-svn: 331095
2018-04-27 23:36:35 +00:00

67 lines
1.6 KiB
YAML

# RUN: llc -mtriple=aarch64--- -run-pass=prologepilog -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s
--- |
define void @baz() #0 {
ret void
}
define void @bar(i32 %a) #0 {
ret void
}
attributes #0 = { noredzone }
...
---
name: bar
tracksRegLiveness: true
body: |
bb.0:
liveins: $w0, $lr, $w8
$sp = frame-setup SUBXri $sp, 32, 0
$fp = frame-setup ADDXri $sp, 16, 0
bb.1:
BL @baz, implicit-def dead $lr, implicit $sp
$w17 = ORRWri $wzr, 1
$w17 = ORRWri $wzr, 1
$w0 = ORRWri $wzr, 4
BL @baz, implicit-def dead $lr, implicit $sp
$w17 = ORRWri $wzr, 1
$w17 = ORRWri $wzr, 1
$w0 = ORRWri $wzr, 3
BL @baz, implicit-def dead $lr, implicit $sp
$w17 = ORRWri $wzr, 1
$w17 = ORRWri $wzr, 1
$w0 = ORRWri $wzr, 2
BL @baz, implicit-def dead $lr, implicit $sp
$w17 = ORRWri $wzr, 1
$w17 = ORRWri $wzr, 1
$w0 = ORRWri $wzr, 1
bb.2:
$fp, $lr = LDPXi $sp, 2
RET undef $lr
...
---
name: baz
tracksRegLiveness: true
body: |
bb.0:
liveins: $w0, $lr, $w8
RET undef $lr
# CHECK: name: OUTLINED_FUNCTION_0
# CHECK-DAG: bb.0:
# CHECK-DAG: frame-setup CFI_INSTRUCTION def_cfa_offset -16
# CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $w30, 16
# CHECK-NEXT: early-clobber $sp = STRXpre $lr, $sp, -16
# CHECK-NEXT: BL @baz, implicit-def dead $lr, implicit $sp
# CHECK-NEXT: $w17 = ORRWri $wzr, 1
# CHECK-NEXT: $w17 = ORRWri $wzr, 1
# CHECK-NEXT: early-clobber $sp, $lr = LDRXpost $sp, 16
# CHECK-NEXT: RET undef $lr