mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-07 19:47:53 +00:00
ee6b7b1495
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
67 lines
1.6 KiB
YAML
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
|