1 ; RUN: llc -mtriple=x86_64-- -O3 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s 2 3 ; REQUIRES: asserts 4 5 ; CHECK-LABEL: Pass Arguments: 6 ; CHECK-NEXT: Target Library Information 7 ; CHECK-NEXT: Target Pass Configuration 8 ; CHECK-NEXT: Machine Module Information 9 ; CHECK-NEXT: Target Transform Information 10 ; CHECK-NEXT: Type-Based Alias Analysis 11 ; CHECK-NEXT: Scoped NoAlias Alias Analysis 12 ; CHECK-NEXT: Assumption Cache Tracker 13 ; CHECK-NEXT: Create Garbage Collector Module Metadata 14 ; CHECK-NEXT: Profile summary info 15 ; CHECK-NEXT: Machine Branch Probability Analysis 16 ; CHECK-NEXT: ModulePass Manager 17 ; CHECK-NEXT: Pre-ISel Intrinsic Lowering 18 ; CHECK-NEXT: FunctionPass Manager 19 ; CHECK-NEXT: Expand Atomic instructions 20 ; CHECK-NEXT: Dominator Tree Construction 21 ; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 22 ; CHECK-NEXT: Module Verifier 23 ; CHECK-NEXT: Natural Loop Information 24 ; CHECK-NEXT: Canonicalize natural loops 25 ; CHECK-NEXT: Scalar Evolution Analysis 26 ; CHECK-NEXT: Loop Pass Manager 27 ; CHECK-NEXT: Induction Variable Users 28 ; CHECK-NEXT: Loop Strength Reduction 29 ; CHECK-NEXT: Merge contiguous icmps into a memcmp 30 ; CHECK-NEXT: Expand memcmp() to load/stores 31 ; CHECK-NEXT: Lower Garbage Collection Instructions 32 ; CHECK-NEXT: Shadow Stack GC Lowering 33 ; CHECK-NEXT: Remove unreachable blocks from the CFG 34 ; CHECK-NEXT: Dominator Tree Construction 35 ; CHECK-NEXT: Natural Loop Information 36 ; CHECK-NEXT: Branch Probability Analysis 37 ; CHECK-NEXT: Block Frequency Analysis 38 ; CHECK-NEXT: Constant Hoisting 39 ; CHECK-NEXT: Partially inline calls to library functions 40 ; CHECK-NEXT: Instrument function entry/exit with calls to e.g. mcount() (post inlining) 41 ; CHECK-NEXT: Scalarize Masked Memory Intrinsics 42 ; CHECK-NEXT: Expand reduction intrinsics 43 ; CHECK-NEXT: Dominator Tree Construction 44 ; CHECK-NEXT: Interleaved Access Pass 45 ; CHECK-NEXT: Expand indirectbr instructions 46 ; CHECK-NEXT: Dominator Tree Construction 47 ; CHECK-NEXT: Natural Loop Information 48 ; CHECK-NEXT: CodeGen Prepare 49 ; CHECK-NEXT: Rewrite Symbols 50 ; CHECK-NEXT: FunctionPass Manager 51 ; CHECK-NEXT: Dominator Tree Construction 52 ; CHECK-NEXT: Exception handling preparation 53 ; CHECK-NEXT: Safe Stack instrumentation pass 54 ; CHECK-NEXT: Insert stack protectors 55 ; CHECK-NEXT: Module Verifier 56 ; CHECK-NEXT: Dominator Tree Construction 57 ; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 58 ; CHECK-NEXT: Function Alias Analysis Results 59 ; CHECK-NEXT: Natural Loop Information 60 ; CHECK-NEXT: Branch Probability Analysis 61 ; CHECK-NEXT: X86 DAG->DAG Instruction Selection 62 ; CHECK-NEXT: MachineDominator Tree Construction 63 ; CHECK-NEXT: Local Dynamic TLS Access Clean-up 64 ; CHECK-NEXT: X86 PIC Global Base Reg Initialization 65 ; CHECK-NEXT: Expand ISel Pseudo-instructions 66 ; CHECK-NEXT: X86 Domain Reassignment Pass 67 ; CHECK-NEXT: Early Tail Duplication 68 ; CHECK-NEXT: Optimize machine instruction PHIs 69 ; CHECK-NEXT: Slot index numbering 70 ; CHECK-NEXT: Merge disjoint stack slots 71 ; CHECK-NEXT: Local Stack Slot Allocation 72 ; CHECK-NEXT: Remove dead machine instructions 73 ; CHECK-NEXT: MachineDominator Tree Construction 74 ; CHECK-NEXT: Machine Natural Loop Construction 75 ; CHECK-NEXT: Machine Trace Metrics 76 ; CHECK-NEXT: Early If-Conversion 77 ; CHECK-NEXT: Machine InstCombiner 78 ; CHECK-NEXT: X86 cmov Conversion 79 ; CHECK-NEXT: MachineDominator Tree Construction 80 ; CHECK-NEXT: Machine Natural Loop Construction 81 ; CHECK-NEXT: Early Machine Loop Invariant Code Motion 82 ; CHECK-NEXT: Machine Common Subexpression Elimination 83 ; CHECK-NEXT: MachinePostDominator Tree Construction 84 ; CHECK-NEXT: Machine Block Frequency Analysis 85 ; CHECK-NEXT: Machine code sinking 86 ; CHECK-NEXT: Peephole Optimizations 87 ; CHECK-NEXT: Remove dead machine instructions 88 ; CHECK-NEXT: Live Range Shrink 89 ; CHECK-NEXT: X86 Fixup SetCC 90 ; CHECK-NEXT: X86 LEA Optimize 91 ; CHECK-NEXT: X86 Optimize Call Frame 92 ; CHECK-NEXT: X86 Avoid Store Forwarding Block 93 ; CHECK-NEXT: MachineDominator Tree Construction 94 ; CHECK-NEXT: X86 EFLAGS copy lowering 95 ; CHECK-NEXT: X86 WinAlloca Expander 96 ; CHECK-NEXT: Detect Dead Lanes 97 ; CHECK-NEXT: Process Implicit Definitions 98 ; CHECK-NEXT: Remove unreachable machine basic blocks 99 ; CHECK-NEXT: Live Variable Analysis 100 ; CHECK-NEXT: MachineDominator Tree Construction 101 ; CHECK-NEXT: Machine Natural Loop Construction 102 ; CHECK-NEXT: Eliminate PHI nodes for register allocation 103 ; CHECK-NEXT: Two-Address instruction pass 104 ; CHECK-NEXT: Slot index numbering 105 ; CHECK-NEXT: Live Interval Analysis 106 ; CHECK-NEXT: Simple Register Coalescing 107 ; CHECK-NEXT: Rename Disconnected Subregister Components 108 ; CHECK-NEXT: Machine Instruction Scheduler 109 ; CHECK-NEXT: Machine Block Frequency Analysis 110 ; CHECK-NEXT: Debug Variable Analysis 111 ; CHECK-NEXT: Live Stack Slot Analysis 112 ; CHECK-NEXT: Virtual Register Map 113 ; CHECK-NEXT: Live Register Matrix 114 ; CHECK-NEXT: Bundle Machine CFG Edges 115 ; CHECK-NEXT: Spill Code Placement Analysis 116 ; CHECK-NEXT: Lazy Machine Block Frequency Analysis 117 ; CHECK-NEXT: Machine Optimization Remark Emitter 118 ; CHECK-NEXT: Greedy Register Allocator 119 ; CHECK-NEXT: Virtual Register Rewriter 120 ; CHECK-NEXT: Stack Slot Coloring 121 ; CHECK-NEXT: Machine Copy Propagation Pass 122 ; CHECK-NEXT: Machine Loop Invariant Code Motion 123 ; CHECK-NEXT: Bundle Machine CFG Edges 124 ; CHECK-NEXT: X86 FP Stackifier 125 ; CHECK-NEXT: PostRA Machine Sink 126 ; CHECK-NEXT: Machine Block Frequency Analysis 127 ; CHECK-NEXT: MachinePostDominator Tree Construction 128 ; CHECK-NEXT: Lazy Machine Block Frequency Analysis 129 ; CHECK-NEXT: Machine Optimization Remark Emitter 130 ; CHECK-NEXT: Shrink Wrapping analysis 131 ; CHECK-NEXT: Prologue/Epilogue Insertion & Frame Finalization 132 ; CHECK-NEXT: Control Flow Optimizer 133 ; CHECK-NEXT: Tail Duplication 134 ; CHECK-NEXT: Machine Copy Propagation Pass 135 ; CHECK-NEXT: Post-RA pseudo instruction expansion pass 136 ; CHECK-NEXT: X86 pseudo instruction expansion pass 137 ; CHECK-NEXT: MachineDominator Tree Construction 138 ; CHECK-NEXT: Machine Natural Loop Construction 139 ; CHECK-NEXT: Post RA top-down list latency scheduler 140 ; CHECK-NEXT: Analyze Machine Code For Garbage Collection 141 ; CHECK-NEXT: Machine Block Frequency Analysis 142 ; CHECK-NEXT: MachinePostDominator Tree Construction 143 ; CHECK-NEXT: Branch Probability Basic Block Placement 144 ; CHECK-NEXT: ReachingDefAnalysis 145 ; CHECK-NEXT: X86 Execution Dependency Fix 146 ; CHECK-NEXT: BreakFalseDeps 147 ; CHECK-NEXT: Shadow Call Stack 148 ; CHECK-NEXT: X86 Indirect Branch Tracking 149 ; CHECK-NEXT: X86 vzeroupper inserter 150 ; CHECK-NEXT: MachineDominator Tree Construction 151 ; CHECK-NEXT: Machine Natural Loop Construction 152 ; CHECK-NEXT: X86 Byte/Word Instruction Fixup 153 ; CHECK-NEXT: X86 Atom pad short functions 154 ; CHECK-NEXT: X86 LEA Fixup 155 ; CHECK-NEXT: Compressing EVEX instrs to VEX encoding when possible 156 ; CHECK-NEXT: Contiguously Lay Out Funclets 157 ; CHECK-NEXT: StackMap Liveness Analysis 158 ; CHECK-NEXT: Live DEBUG_VALUE analysis 159 ; CHECK-NEXT: Insert fentry calls 160 ; CHECK-NEXT: Insert XRay ops 161 ; CHECK-NEXT: Implement the 'patchable-function' attribute 162 ; CHECK-NEXT: X86 Retpoline Thunks 163 ; CHECK-NEXT: Check CFA info and insert CFI instructions if needed 164 ; CHECK-NEXT: Lazy Machine Block Frequency Analysis 165 ; CHECK-NEXT: Machine Optimization Remark Emitter 166 ; CHECK-NEXT: X86 Assembly Printer 167 ; CHECK-NEXT: Free MachineFunction 168 169 define void @f() { 170 ret void 171 } 172