59 lines
1.6 KiB
Text
59 lines
1.6 KiB
Text
|
# RUN: llc -mtriple=aarch64 -debug-only=machine-outliner -run-pass=machine-outliner -verify-machineinstrs %s -o /dev/null 2>&1 | FileCheck %s
|
||
|
# REQUIRES: asserts
|
||
|
|
||
|
# CHECK-LABEL: *** Populating mapper ***
|
||
|
# CHECK-NEXT: MAPPING FUNCTION: block_too_small
|
||
|
# CHECK-NEXT: MAPPING MBB: ''
|
||
|
# CHECK-NEXT: SKIP: MBB size less than minimum size of 2
|
||
|
# CHECK-NEXT: MAPPING FUNCTION: no_outline
|
||
|
# CHECK-NEXT: SKIP: Function has nooutline attribute
|
||
|
# CHECK-NEXT: MAPPING FUNCTION: redzone
|
||
|
# CHECK-NEXT: SKIP: redzone: unsafe to outline from
|
||
|
# CHECK-NEXT: MAPPING FUNCTION: no_mf
|
||
|
# CHECK-NEXT: SKIP: Function does not have a MachineFunction
|
||
|
# CHECK-NEXT: MAPPING FUNCTION: block_addr_fn
|
||
|
# CHECK-NEXT: MAPPING MBB: 'label'
|
||
|
# CHECK-NEXT: SKIP: MBB's address is taken
|
||
|
|
||
|
--- |
|
||
|
define void @block_too_small() noredzone { unreachable }
|
||
|
define void @no_outline() noredzone "nooutline" { unreachable }
|
||
|
define void @redzone() { unreachable }
|
||
|
declare void @no_mf()
|
||
|
define void @block_addr_fn() noredzone {
|
||
|
entry:
|
||
|
br label %label
|
||
|
label:
|
||
|
call void @block_addr_fn(ptr blockaddress(@block_addr_fn, %label))
|
||
|
ret void
|
||
|
}
|
||
|
...
|
||
|
---
|
||
|
name: no_outline
|
||
|
tracksRegLiveness: true
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $w0, $lr, $w8
|
||
|
RET undef $lr
|
||
|
...
|
||
|
---
|
||
|
name: block_too_small
|
||
|
tracksRegLiveness: true
|
||
|
body: |
|
||
|
bb.0:
|
||
|
liveins: $w0, $lr, $w8
|
||
|
RET undef $lr
|
||
|
...
|
||
|
---
|
||
|
name: block_addr_fn
|
||
|
tracksRegLiveness: true
|
||
|
body: |
|
||
|
bb.0.label (ir-block-address-taken %ir-block.label):
|
||
|
liveins: $w0, $lr, $w8
|
||
|
$w0 = ORRWri $wzr, 1
|
||
|
$w0 = ORRWri $wzr, 1
|
||
|
$w0 = ORRWri $wzr, 4
|
||
|
RET undef $lr
|
||
|
...
|
||
|
---
|