# 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 ... ---