1; RUN: opt -enable-new-pm=0 -mtriple=x86_64-- -Os -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck --check-prefixes=CHECK,%llvmcheckext %s 2 3; REQUIRES: asserts 4 5; CHECK-LABEL: Pass Arguments: 6; CHECK-NEXT: Target Transform Information 7; CHECK-NEXT: Type-Based Alias Analysis 8; CHECK-NEXT: Scoped NoAlias Alias Analysis 9; CHECK-NEXT: Assumption Cache Tracker 10; CHECK-NEXT: Target Library Information 11; CHECK-NEXT: FunctionPass Manager 12; CHECK-NEXT: Module Verifier 13; CHECK-EXT: Good Bye World Pass 14; CHECK-NOEXT-NOT: Good Bye World Pass 15; CHECK-NEXT: Lower 'expect' Intrinsics 16; CHECK-NEXT: Simplify the CFG 17; CHECK-NEXT: Dominator Tree Construction 18; CHECK-NEXT: SROA 19; CHECK-NEXT: Early CSE 20; CHECK-NEXT: Pass Arguments: 21; CHECK-NEXT: Target Library Information 22; CHECK-NEXT: Target Transform Information 23; Target Pass Configuration 24; CHECK: Type-Based Alias Analysis 25; CHECK-NEXT: Scoped NoAlias Alias Analysis 26; CHECK-NEXT: Assumption Cache Tracker 27; CHECK-NEXT: Profile summary info 28; CHECK-NEXT: ModulePass Manager 29; CHECK-NEXT: Annotation2Metadata 30; CHECK-NEXT: Force set function attributes 31; CHECK-NEXT: Infer set function attributes 32; CHECK-NEXT: Interprocedural Sparse Conditional Constant Propagation 33; CHECK-NEXT: FunctionPass Manager 34; CHECK-NEXT: Dominator Tree Construction 35; CHECK-NEXT: Called Value Propagation 36; CHECK-NEXT: Global Variable Optimizer 37; CHECK-NEXT: FunctionPass Manager 38; CHECK-NEXT: Dominator Tree Construction 39; CHECK-NEXT: Natural Loop Information 40; CHECK-NEXT: Post-Dominator Tree Construction 41; CHECK-NEXT: Branch Probability Analysis 42; CHECK-NEXT: Block Frequency Analysis 43; CHECK-NEXT: FunctionPass Manager 44; CHECK-NEXT: Dominator Tree Construction 45; CHECK-NEXT: Promote Memory to Register 46; CHECK-NEXT: Dead Argument Elimination 47; CHECK-NEXT: FunctionPass Manager 48; CHECK-NEXT: Dominator Tree Construction 49; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 50; CHECK-NEXT: Function Alias Analysis Results 51; CHECK-NEXT: Natural Loop Information 52; CHECK-NEXT: Lazy Branch Probability Analysis 53; CHECK-NEXT: Lazy Block Frequency Analysis 54; CHECK-NEXT: Optimization Remark Emitter 55; CHECK-NEXT: Combine redundant instructions 56; CHECK-NEXT: Simplify the CFG 57; CHECK-NEXT: CallGraph Construction 58; CHECK-NEXT: Globals Alias Analysis 59; CHECK-NEXT: Call Graph SCC Pass Manager 60; CHECK-NEXT: Remove unused exception handling info 61; CHECK-NEXT: Function Integration/Inlining 62; CHECK-NEXT: OpenMP specific optimizations 63; CHECK-NEXT: Deduce function attributes 64; CHECK-NEXT: FunctionPass Manager 65; CHECK-NEXT: Dominator Tree Construction 66; CHECK-NEXT: SROA 67; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 68; CHECK-NEXT: Function Alias Analysis Results 69; CHECK-NEXT: Memory SSA 70; CHECK-NEXT: Early CSE w/ MemorySSA 71; CHECK-NEXT: Speculatively execute instructions if target has divergent branches 72; CHECK-NEXT: Function Alias Analysis Results 73; CHECK-NEXT: Lazy Value Information Analysis 74; CHECK-NEXT: Jump Threading 75; CHECK-NEXT: Value Propagation 76; CHECK-NEXT: Simplify the CFG 77; CHECK-NEXT: Dominator Tree Construction 78; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 79; CHECK-NEXT: Function Alias Analysis Results 80; CHECK-NEXT: Natural Loop Information 81; CHECK-NEXT: Lazy Branch Probability Analysis 82; CHECK-NEXT: Lazy Block Frequency Analysis 83; CHECK-NEXT: Optimization Remark Emitter 84; CHECK-NEXT: Combine redundant instructions 85; CHECK-NEXT: Optimization Remark Emitter 86; CHECK-NEXT: Tail Call Elimination 87; CHECK-NEXT: Simplify the CFG 88; CHECK-NEXT: Reassociate expressions 89; CHECK-NEXT: Dominator Tree Construction 90; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 91; CHECK-NEXT: Function Alias Analysis Results 92; CHECK-NEXT: Memory SSA 93; CHECK-NEXT: Natural Loop Information 94; CHECK-NEXT: Canonicalize natural loops 95; CHECK-NEXT: LCSSA Verifier 96; CHECK-NEXT: Loop-Closed SSA Form Pass 97; CHECK-NEXT: Scalar Evolution Analysis 98; CHECK-NEXT: Lazy Branch Probability Analysis 99; CHECK-NEXT: Lazy Block Frequency Analysis 100; CHECK-NEXT: Loop Pass Manager 101; CHECK-NEXT: Loop Invariant Code Motion 102; CHECK-NEXT: Rotate Loops 103; CHECK-NEXT: Loop Invariant Code Motion 104; CHECK-NEXT: Unswitch loops 105; CHECK-NEXT: Simplify the CFG 106; CHECK-NEXT: Dominator Tree Construction 107; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 108; CHECK-NEXT: Function Alias Analysis Results 109; CHECK-NEXT: Natural Loop Information 110; CHECK-NEXT: Lazy Branch Probability Analysis 111; CHECK-NEXT: Lazy Block Frequency Analysis 112; CHECK-NEXT: Optimization Remark Emitter 113; CHECK-NEXT: Combine redundant instructions 114; CHECK-NEXT: Canonicalize natural loops 115; CHECK-NEXT: LCSSA Verifier 116; CHECK-NEXT: Loop-Closed SSA Form Pass 117; CHECK-NEXT: Scalar Evolution Analysis 118; CHECK-NEXT: Loop Pass Manager 119; CHECK-NEXT: Recognize loop idioms 120; CHECK-NEXT: Induction Variable Simplification 121; CHECK-NEXT: Delete dead loops 122; CHECK-NEXT: Unroll loops 123; CHECK-NEXT: SROA 124; CHECK-NEXT: Function Alias Analysis Results 125; CHECK-NEXT: MergedLoadStoreMotion 126; CHECK-NEXT: Phi Values Analysis 127; CHECK-NEXT: Function Alias Analysis Results 128; CHECK-NEXT: Memory Dependence Analysis 129; CHECK-NEXT: Lazy Branch Probability Analysis 130; CHECK-NEXT: Lazy Block Frequency Analysis 131; CHECK-NEXT: Optimization Remark Emitter 132; CHECK-NEXT: Global Value Numbering 133; CHECK-NEXT: Sparse Conditional Constant Propagation 134; CHECK-NEXT: Demanded bits analysis 135; CHECK-NEXT: Bit-Tracking Dead Code Elimination 136; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 137; CHECK-NEXT: Function Alias Analysis Results 138; CHECK-NEXT: Lazy Branch Probability Analysis 139; CHECK-NEXT: Lazy Block Frequency Analysis 140; CHECK-NEXT: Optimization Remark Emitter 141; CHECK-NEXT: Combine redundant instructions 142; CHECK-NEXT: Lazy Value Information Analysis 143; CHECK-NEXT: Jump Threading 144; CHECK-NEXT: Value Propagation 145; CHECK-NEXT: Post-Dominator Tree Construction 146; CHECK-NEXT: Aggressive Dead Code Elimination 147; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 148; CHECK-NEXT: Function Alias Analysis Results 149; CHECK-NEXT: Memory SSA 150; CHECK-NEXT: MemCpy Optimization 151; CHECK-NEXT: Natural Loop Information 152; CHECK-NEXT: Dead Store Elimination 153; CHECK-NEXT: Canonicalize natural loops 154; CHECK-NEXT: LCSSA Verifier 155; CHECK-NEXT: Loop-Closed SSA Form Pass 156; CHECK-NEXT: Function Alias Analysis Results 157; CHECK-NEXT: Scalar Evolution Analysis 158; CHECK-NEXT: Lazy Branch Probability Analysis 159; CHECK-NEXT: Lazy Block Frequency Analysis 160; CHECK-NEXT: Loop Pass Manager 161; CHECK-NEXT: Loop Invariant Code Motion 162; CHECK-NEXT: Simplify the CFG 163; CHECK-NEXT: Dominator Tree Construction 164; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 165; CHECK-NEXT: Function Alias Analysis Results 166; CHECK-NEXT: Natural Loop Information 167; CHECK-NEXT: Lazy Branch Probability Analysis 168; CHECK-NEXT: Lazy Block Frequency Analysis 169; CHECK-NEXT: Optimization Remark Emitter 170; CHECK-NEXT: Combine redundant instructions 171; CHECK-NEXT: A No-Op Barrier Pass 172; CHECK-NEXT: Eliminate Available Externally Globals 173; CHECK-NEXT: CallGraph Construction 174; CHECK-NEXT: Deduce function attributes in RPO 175; CHECK-NEXT: Global Variable Optimizer 176; CHECK-NEXT: FunctionPass Manager 177; CHECK-NEXT: Dominator Tree Construction 178; CHECK-NEXT: Natural Loop Information 179; CHECK-NEXT: Post-Dominator Tree Construction 180; CHECK-NEXT: Branch Probability Analysis 181; CHECK-NEXT: Block Frequency Analysis 182; CHECK-NEXT: Dead Global Elimination 183; CHECK-NEXT: CallGraph Construction 184; CHECK-NEXT: Globals Alias Analysis 185; CHECK-NEXT: FunctionPass Manager 186; CHECK-NEXT: Dominator Tree Construction 187; CHECK-NEXT: Float to int 188; CHECK-NEXT: Lower constant intrinsics 189; CHECK-NEXT: Natural Loop Information 190; CHECK-NEXT: Canonicalize natural loops 191; CHECK-NEXT: LCSSA Verifier 192; CHECK-NEXT: Loop-Closed SSA Form Pass 193; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 194; CHECK-NEXT: Function Alias Analysis Results 195; CHECK-NEXT: Scalar Evolution Analysis 196; CHECK-NEXT: Loop Pass Manager 197; CHECK-NEXT: Rotate Loops 198; CHECK-NEXT: Loop Access Analysis 199; CHECK-NEXT: Lazy Branch Probability Analysis 200; CHECK-NEXT: Lazy Block Frequency Analysis 201; CHECK-NEXT: Optimization Remark Emitter 202; CHECK-NEXT: Loop Distribution 203; CHECK-NEXT: Post-Dominator Tree Construction 204; CHECK-NEXT: Branch Probability Analysis 205; CHECK-NEXT: Block Frequency Analysis 206; CHECK-NEXT: Scalar Evolution Analysis 207; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 208; CHECK-NEXT: Function Alias Analysis Results 209; CHECK-NEXT: Loop Access Analysis 210; CHECK-NEXT: Demanded bits analysis 211; CHECK-NEXT: Lazy Branch Probability Analysis 212; CHECK-NEXT: Lazy Block Frequency Analysis 213; CHECK-NEXT: Optimization Remark Emitter 214; CHECK-NEXT: Inject TLI Mappings 215; CHECK-NEXT: Loop Vectorization 216; CHECK-NEXT: Canonicalize natural loops 217; CHECK-NEXT: Scalar Evolution Analysis 218; CHECK-NEXT: Function Alias Analysis Results 219; CHECK-NEXT: Loop Access Analysis 220; CHECK-NEXT: Lazy Branch Probability Analysis 221; CHECK-NEXT: Lazy Block Frequency Analysis 222; CHECK-NEXT: Loop Load Elimination 223; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 224; CHECK-NEXT: Function Alias Analysis Results 225; CHECK-NEXT: Lazy Branch Probability Analysis 226; CHECK-NEXT: Lazy Block Frequency Analysis 227; CHECK-NEXT: Optimization Remark Emitter 228; CHECK-NEXT: Combine redundant instructions 229; CHECK-NEXT: Simplify the CFG 230; CHECK-NEXT: Dominator Tree Construction 231; CHECK-NEXT: Natural Loop Information 232; CHECK-NEXT: Scalar Evolution Analysis 233; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 234; CHECK-NEXT: Function Alias Analysis Results 235; CHECK-NEXT: Demanded bits analysis 236; CHECK-NEXT: Lazy Branch Probability Analysis 237; CHECK-NEXT: Lazy Block Frequency Analysis 238; CHECK-NEXT: Optimization Remark Emitter 239; CHECK-NEXT: Inject TLI Mappings 240; CHECK-NEXT: SLP Vectorizer 241; CHECK-NEXT: Optimize scalar/vector ops 242; CHECK-NEXT: Optimization Remark Emitter 243; CHECK-NEXT: Combine redundant instructions 244; CHECK-NEXT: Canonicalize natural loops 245; CHECK-NEXT: LCSSA Verifier 246; CHECK-NEXT: Loop-Closed SSA Form Pass 247; CHECK-NEXT: Scalar Evolution Analysis 248; CHECK-NEXT: Loop Pass Manager 249; CHECK-NEXT: Unroll loops 250; CHECK-NEXT: Lazy Branch Probability Analysis 251; CHECK-NEXT: Lazy Block Frequency Analysis 252; CHECK-NEXT: Optimization Remark Emitter 253; CHECK-NEXT: Combine redundant instructions 254; CHECK-NEXT: Memory SSA 255; CHECK-NEXT: Canonicalize natural loops 256; CHECK-NEXT: LCSSA Verifier 257; CHECK-NEXT: Loop-Closed SSA Form Pass 258; CHECK-NEXT: Scalar Evolution Analysis 259; CHECK-NEXT: Lazy Branch Probability Analysis 260; CHECK-NEXT: Lazy Block Frequency Analysis 261; CHECK-NEXT: Loop Pass Manager 262; CHECK-NEXT: Loop Invariant Code Motion 263; CHECK-NEXT: Optimization Remark Emitter 264; CHECK-NEXT: Warn about non-applied transformations 265; CHECK-NEXT: Alignment from assumptions 266; CHECK-NEXT: Strip Unused Function Prototypes 267; CHECK-NEXT: Dead Global Elimination 268; CHECK-NEXT: Merge Duplicate Global Constants 269; CHECK-NEXT: Call Graph Profile 270; CHECK-NEXT: FunctionPass Manager 271; CHECK-NEXT: Dominator Tree Construction 272; CHECK-NEXT: Natural Loop Information 273; CHECK-NEXT: Lazy Branch Probability Analysis 274; CHECK-NEXT: Lazy Block Frequency Analysis 275; CHECK-NEXT: FunctionPass Manager 276; CHECK-NEXT: Dominator Tree Construction 277; CHECK-NEXT: Natural Loop Information 278; CHECK-NEXT: Post-Dominator Tree Construction 279; CHECK-NEXT: Branch Probability Analysis 280; CHECK-NEXT: Block Frequency Analysis 281; CHECK-NEXT: Canonicalize natural loops 282; CHECK-NEXT: LCSSA Verifier 283; CHECK-NEXT: Loop-Closed SSA Form Pass 284; CHECK-NEXT: Basic Alias Analysis (stateless AA impl) 285; CHECK-NEXT: Function Alias Analysis Results 286; CHECK-NEXT: Scalar Evolution Analysis 287; CHECK-NEXT: Block Frequency Analysis 288; CHECK-NEXT: Loop Pass Manager 289; CHECK-NEXT: Loop Sink 290; CHECK-NEXT: Lazy Branch Probability Analysis 291; CHECK-NEXT: Lazy Block Frequency Analysis 292; CHECK-NEXT: Optimization Remark Emitter 293; CHECK-NEXT: Remove redundant instructions 294; CHECK-NEXT: Hoist/decompose integer division and remainder 295; CHECK-NEXT: Simplify the CFG 296; CHECK-NEXT: Annotation Remarks 297; CHECK-NEXT: Module Verifier 298; CHECK-NEXT: Bitcode Writer 299; CHECK-NEXT: Pass Arguments: 300; CHECK-NEXT: FunctionPass Manager 301; CHECK-NEXT: Dominator Tree Construction 302; CHECK-NEXT: Pass Arguments: 303; CHECK-NEXT: Target Library Information 304; CHECK-NEXT: FunctionPass Manager 305; CHECK-NEXT: Dominator Tree Construction 306; CHECK-NEXT: Natural Loop Information 307; CHECK-NEXT: Post-Dominator Tree Construction 308; CHECK-NEXT: Branch Probability Analysis 309; CHECK-NEXT: Block Frequency Analysis 310; CHECK-NEXT: Pass Arguments: 311; CHECK-NEXT: Target Library Information 312; CHECK-NEXT: FunctionPass Manager 313; CHECK-NEXT: Dominator Tree Construction 314; CHECK-NEXT: Natural Loop Information 315; CHECK-NEXT: Post-Dominator Tree Construction 316; CHECK-NEXT: Branch Probability Analysis 317; CHECK-NEXT: Block Frequency Analysis 318 319define void @f() { 320 ret void 321} 322