# RUN: llc -mtriple=aarch64-apple-darwin -run-pass=prologepilog \ # RUN: -run-pass=machine-outliner %s -pass-remarks-analysis='size-info' \ # RUN: -pass-remarks-output=%t.yaml -o /dev/null < %s 2> %t; \ # RUN: cat %t %t.yaml | FileCheck %s # Ensure that the MachineOutliner produces codegen size remarks. Make sure... # - Functions that are outlined from shrink in the remark (foo) # - Outlined functions start with 0 instructions # - Outlined functions end with the same number of instructions as the delta # CHECK: remark: <unknown>:0:0: Machine Outliner: Function: foo: # CHECK-SAME: MI instruction count changed from # CHECK-SAME: [[FOO1:[1-9][0-9]*]] to [[FOO2:[1-9][0-9]*]]; # CHECK-SAME: Delta: [[FOODELTA:-?[1-9][0-9]*]] # CHECK-NEXT: remark: <unknown>:0:0: Machine Outliner: # CHECK-SAME: Function: OUTLINED_FUNCTION_0: MI instruction count changed from # CHECK-SAME: 0 to [[OFUNCSIZE:[1-9][0-9]*]]; Delta: [[OFUNCSIZE]] # CHECK-DAG: - Pass: Machine Outliner # CHECK-NEXT: - String: ': Function: ' # CHECK-NEXT: - Function: foo # CHECK-NEXT: - String: ': MI instruction count changed from ' # CHECK-NEXT: - MIInstrsBefore: '[[FOO1]]' # CHECK-NEXT: - String: ' to ' # CHECK-NEXT: - MIInstrsAfter: '[[FOO2]]' # CHECK-NEXT: - String: '; Delta: ' # CHECK-NEXT: - Delta: '[[FOODELTA]]' # CHECK-NEXT:... # CHECK-NEXT: --- !Analysis # CHECK-NEXT: Pass: size-info # CHECK-NEXT: Name: FunctionMISizeChange # CHECK-NEXT: Function: OUTLINED_FUNCTION_0 # CHECK-NEXT: Args: # CHECK-NEXT: - Pass: Machine Outliner # CHECK-NEXT: - String: ': Function: ' # CHECK-NEXT: - Function: OUTLINED_FUNCTION_0 # CHECK-NEXT: - String: ': MI instruction count changed from ' # CHECK-NEXT: - MIInstrsBefore: '0' # CHECK-NEXT: - String: ' to ' # CHECK-NEXT: - MIInstrsAfter: '[[OFUNCSIZE]]' # CHECK-NEXT: - String: '; Delta: ' # CHECK-NEXT: - Delta: '[[OFUNCSIZE]]' ... --- | define void @foo() #0 { ret void } attributes #0 = { minsize noinline noredzone "frame-pointer"="all" } ... --- name: foo tracksRegLiveness: true fixedStack: body: | bb.0: liveins: $lr, $w9 $lr = ORRXri $xzr, 1 $x25 = ORRXri $xzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 2 bb.1: liveins: $lr, $w9 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 2 bb.2: liveins: $lr, $w9 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 1 $w9 = ORRWri $wzr, 2 RET undef $lr