1; Test that the loop PM infrastructure is invalidated appropriately. 2; 3; Check that we always nuke the LPM stuff when the loops themselves are 4; invalidated. 5; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \ 6; RUN: -passes='loop(no-op-loop),invalidate<loops>,loop(no-op-loop)' \ 7; RUN: | FileCheck %s --check-prefix=CHECK-LOOP-INV 8; 9; If we ended up building the standard analyses, their invalidation should nuke 10; stuff as well. 11; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \ 12; RUN: -passes='loop(no-op-loop),invalidate<scalar-evolution>,loop(no-op-loop)' \ 13; RUN: | FileCheck %s --check-prefix=CHECK-SCEV-INV 14; 15; Also provide a test that can delete loops after populating analyses for them. 16; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \ 17; RUN: -passes='loop(no-op-loop,loop-deletion),invalidate<scalar-evolution>,loop(no-op-loop)' \ 18; RUN: | FileCheck %s --check-prefix=CHECK-SCEV-INV-AFTER-DELETE 19 20define void @no_loops() { 21; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops 22; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 23; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 24; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 25; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 26; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 27; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 28; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 29; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 30; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses 31; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 32; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops 33; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 34; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 35; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 36; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 37; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 38; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 39; 40; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops 41; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 42; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 43; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 44; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 45; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 46; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 47; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 48; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 49; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses 50; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops 51; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 52; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 53; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 54; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 55; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 56 57entry: 58 ret void 59} 60 61define void @one_loop(i1* %ptr) { 62; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop 63; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 64; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 65; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 66; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 67; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 68; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 69; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 70; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 71; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 72; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 73; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 74; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 75; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 76; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 77; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 78; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 79; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses 80; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 81; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 82; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 83; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 84; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop 85; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 86; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 87; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 88; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 89; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 90; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 91; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 92; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 93; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 94; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 95; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 96; 97; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop 98; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 99; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 100; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 101; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 102; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 103; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 104; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 105; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 106; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 107; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 108; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 109; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 110; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 111; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 112; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 113; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 114; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses 115; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 116; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 117; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 118; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop 119; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 120; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 121; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 122; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 123; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 124; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 125; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 126; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 127; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 128; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 129 130entry: 131 br label %l0.header 132 133l0.header: 134 %flag0 = load volatile i1, i1* %ptr 135 br i1 %flag0, label %l0.header, label %exit 136 137exit: 138 ret void 139} 140 141define void @nested_loops(i1* %ptr) { 142; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops 143; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 144; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 145; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 146; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 147; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 148; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 149; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 150; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 151; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 152; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 153; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 154; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 155; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 156; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 157; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 158; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 159; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 160; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run. 161; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 162; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses 163; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 164; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 165; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 166; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 167; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 168; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops 169; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 170; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 171; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 172; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 173; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 174; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 175; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 176; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 177; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 178; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 179; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 180; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 181; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run. 182; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 183; 184; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops 185; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 186; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 187; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 188; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 189; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 190; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 191; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 192; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 193; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 194; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 195; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 196; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 197; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 198; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 199; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 200; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 201; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 202; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run. 203; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 204; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses 205; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 206; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 207; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 208; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 209; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops 210; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 211; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 212; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 213; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 214; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 215; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 216; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 217; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 218; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 219; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 220; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 221; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run. 222; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 223 224entry: 225 br label %l.0.header 226 227l.0.header: 228 br label %l.0.0.header 229 230l.0.0.header: 231 %flag.0.0 = load volatile i1, i1* %ptr 232 br i1 %flag.0.0, label %l.0.0.header, label %l.0.latch 233 234l.0.latch: 235 %flag.0 = load volatile i1, i1* %ptr 236 br i1 %flag.0, label %l.0.header, label %exit 237 238exit: 239 ret void 240} 241 242define void @dead_loop() { 243; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 244; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 245; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 246; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 247; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 248; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 249; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 250; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 251; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 252; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 253; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 254; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 255; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 256; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 257; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 258; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 259; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 260; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses 261; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 262; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 263; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 264; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 265; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 266; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 267; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 268; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 269; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 270; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 271; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 272; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 273; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 274; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 275; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 276; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 277; 278; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 279; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 280; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 281; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 282; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 283; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 284; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 285; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 286; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 287; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 288; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 289; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 290; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 291; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 292; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 293; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 294; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 295; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses 296; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 297; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 298; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 299; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 300; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 301; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 302; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 303; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 304; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 305; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 306; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 307; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 308; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 309; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 310; 311; CHECK-SCEV-INV-AFTER-DELETE-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 312; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Function pass manager run 313; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopSimplifyPass 314; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: LoopAnalysis 315; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: DominatorTreeAnalysis 316; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AssumptionAnalysis 317; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LCSSAPass 318; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run 319; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AAManager 320; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetLibraryAnalysis 321; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: ScalarEvolutionAnalysis 322; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetIRAnalysis 323; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 324; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Loop pass manager run. 325; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: NoOpLoopPass 326; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopDeletionPass 327; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Clearing all analysis results for: 328; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Loop pass manager run. 329; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating all non-preserved analyses 330; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 331; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating all non-preserved analyses 332; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 333; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 334; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop 335; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Function pass manager run 336; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopSimplifyPass 337; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LCSSAPass 338; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run 339; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run. 340 341entry: 342 br label %l0.header 343 344l0.header: 345 br i1 false, label %l0.header, label %exit 346 347exit: 348 ret void 349} 350