128 lines · plain
1; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -pass-remarks-analysis=asm-printer \2; RUN: --debugify-and-strip-all-safe=0 \3; RUN: -verify-machineinstrs \4; RUN: -pass-remarks-with-hotness=1 -asm-verbose=0 \5; RUN: -debug-only=lazy-machine-block-freq,block-freq \6; RUN: -debug-pass=Executions 2>&1 | FileCheck %s -check-prefix=HOTNESS7 8; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -pass-remarks-analysis=asm-printer \9; RUN: --debugify-and-strip-all-safe=0 \10; RUN: -verify-machineinstrs \11; RUN: -pass-remarks-with-hotness=0 -asm-verbose=0 \12; RUN: -debug-only=lazy-machine-block-freq,block-freq \13; RUN: -debug-pass=Executions 2>&1 | FileCheck %s -check-prefix=NO_HOTNESS14 15; REQUIRES: asserts16 17 18; Verify that we don't new populate MachineBFI for passes that already use19; MBFI, e.g. GreedyRegAlloc. (This hard-codes the previous pass to the20; GreedyRegAlloc, please adjust accordingly.)21 22; HOTNESS: Executing Pass 'Spill Code Placement Analysis'23; HOTNESS-NEXT: Executing Pass 'Lazy Machine Block Frequency Analysis'24; HOTNESS-NEXT: Executing Pass 'Machine Optimization Remark Emitter'25; HOTNESS-NEXT: MachineBlockFrequencyInfo is available26; HOTNESS-NEXT: Executing Pass 'Greedy Register Allocator'27 28 29; Verify that we only populate MachineBFI on behalf of ORE when hotness is30; requested. (This hard-codes the previous pass to the Assembly Printer,31; please adjust accordingly.)32 33; HOTNESS: Freeing Pass 'Machine Outliner'34; HOTNESS-NEXT: Executing Pass 'Function Pass Manager'35; HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...36; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...37; HOTNESS-NEXT: Executing Pass 'AArch64 sls hardening pass' on Function 'empty_func'...38; HOTNESS-NEXT: Freeing Pass 'AArch64 sls hardening pass' on Function 'empty_func'...39; HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...40; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...41; HOTNESS-NEXT: Executing Pass 'AArch64 Pointer Authentication' on Function 'empty_func'...42; HOTNESS-NEXT: Freeing Pass 'AArch64 Pointer Authentication' on Function 'empty_func'...43; HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...44; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...45; HOTNESS-NEXT: Executing Pass 'AArch64 Branch Targets' on Function 'empty_func'...46; HOTNESS-NEXT: Freeing Pass 'AArch64 Branch Targets' on Function 'empty_func'...47; HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...48; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...49; HOTNESS-NEXT: Executing Pass 'Branch relaxation pass' on Function 'empty_func'50; HOTNESS-NEXT: Freeing Pass 'Branch relaxation pass' on Function 'empty_func'51; HOTNESS-NEXT: Executing Pass 'Verify generated machine code'52; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'53; HOTNESS-NEXT: Executing Pass 'AArch64 Compress Jump Tables' on Function 'empty_func'54; HOTNESS-NEXT: Freeing Pass 'AArch64 Compress Jump Tables' on Function 'empty_func'55; HOTNESS-NEXT: Executing Pass 'Verify generated machine code'56; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'57; HOTNESS-NEXT: Executing Pass 'Insert CFI remember/restore state instructions' on Function 'empty_func'58; HOTNESS-NEXT: Freeing Pass 'Insert CFI remember/restore state instructions' on Function 'empty_func'59; HOTNESS-NEXT: Executing Pass 'Verify generated machine code'60; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'61; HOTNESS: Executing Pass 'Unpack machine instruction bundles'62; HOTNESS-NEXT: Freeing Pass 'Unpack machine instruction bundles'63; HOTNESS-NEXT: Executing Pass 'Verify generated machine code'64; HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'65; HOTNESS-NEXT: Executing Pass 'Lazy Machine Block Frequency Analysis'66; HOTNESS-NEXT: Executing Pass 'Machine Optimization Remark Emitter'67; HOTNESS-NEXT: Building MachineBlockFrequencyInfo on the fly68; HOTNESS-NEXT: Building LoopInfo on the fly69; HOTNESS-NEXT: Building DominatorTree on the fly70; HOTNESS-NOT: Executing Pass71; HOTNESS: block-frequency: empty_func72; HOTNESS-NOT: Executing Pass73; HOTNESS: Executing Pass 'AArch64 Assembly Printer'74 75; HOTNESS: arm64-summary-remarks.ll:5:0: 1 instructions in function (hotness: 33)76 77 78; NO_HOTNESS: Freeing Pass 'Machine Outliner'79; NO_HOTNESS-NEXT: Executing Pass 'Function Pass Manager'80; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...81; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...82; NO_HOTNESS-NEXT: Executing Pass 'AArch64 sls hardening pass' on Function 'empty_func'...83; NO_HOTNESS-NEXT: Freeing Pass 'AArch64 sls hardening pass' on Function 'empty_func'...84; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...85; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...86; NO_HOTNESS-NEXT: Executing Pass 'AArch64 Pointer Authentication' on Function 'empty_func'...87; NO_HOTNESS-NEXT: Freeing Pass 'AArch64 Pointer Authentication' on Function 'empty_func'...88; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...89; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...90; NO_HOTNESS-NEXT: Executing Pass 'AArch64 Branch Targets' on Function 'empty_func'...91; NO_HOTNESS-NEXT: Freeing Pass 'AArch64 Branch Targets' on Function 'empty_func'...92; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code' on Function 'empty_func'...93; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code' on Function 'empty_func'...94; NO_HOTNESS-NEXT: Executing Pass 'Branch relaxation pass' on Function 'empty_func'95; NO_HOTNESS-NEXT: Freeing Pass 'Branch relaxation pass' on Function 'empty_func'96; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code'97; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'98; NO_HOTNESS-NEXT: Executing Pass 'AArch64 Compress Jump Tables' on Function 'empty_func'99; NO_HOTNESS-NEXT: Freeing Pass 'AArch64 Compress Jump Tables' on Function 'empty_func'100; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code'101; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'102; NO_HOTNESS-NEXT: Executing Pass 'Insert CFI remember/restore state instructions' on Function 'empty_func'103; NO_HOTNESS-NEXT: Freeing Pass 'Insert CFI remember/restore state instructions' on Function 'empty_func'104; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code'105; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'106; NO_HOTNESS: Executing Pass 'Unpack machine instruction bundles'107; NO_HOTNESS-NEXT: Freeing Pass 'Unpack machine instruction bundles'108; NO_HOTNESS-NEXT: Executing Pass 'Verify generated machine code'109; NO_HOTNESS-NEXT: Freeing Pass 'Verify generated machine code'110; NO_HOTNESS-NEXT: Executing Pass 'Lazy Machine Block Frequency Analysis'111; NO_HOTNESS-NEXT: Executing Pass 'Machine Optimization Remark Emitter'112; NO_HOTNESS-NEXT: Executing Pass 'AArch64 Assembly Printer'113 114; NO_HOTNESS: arm64-summary-remarks.ll:5:0: 1 instructions in function{{$}}115 116define void @empty_func() nounwind ssp !dbg !3 !prof !4 {117 ret void118}119 120!llvm.dbg.cu = !{!0}121!llvm.module.flags = !{!2}122 123!0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1)124!1 = !DIFile(filename: "arm64-summary-remarks.ll", directory: "")125!2 = !{i32 2, !"Debug Info Version", i32 3}126!3 = distinct !DISubprogram(name: "empty_func", scope: !1, file: !1, line: 5, scopeLine: 5, unit: !0)127!4 = !{!"function_entry_count", i64 33}128