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 -aa-pipeline= %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 -aa-pipeline= 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 -aa-pipeline= 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: Starting {{.*}}Function pass manager run 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 analysis: LoopAnalysis 31; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 32; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 33; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 34; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 35; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 36; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 37; 38; CHECK-SCEV-INV: Starting {{.*}}Function pass manager run 39; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 40; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 41; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 42; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 43; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 44; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 45; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 46; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 47; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 48; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 49; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 50; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 51; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 52 53entry: 54 ret void 55} 56 57define void @one_loop(i1* %ptr) { 58; CHECK-LOOP-INV: Starting {{.*}}Function pass manager run 59; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 60; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 61; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 62; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 63; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 64; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 65; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 66; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 67; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 68; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 69; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 70; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 71; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 72; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 73; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 74; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 75; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 76; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 77; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 78; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 79; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 80; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 81; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 82; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 83; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 84; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 85; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 86; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 87; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 88; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 89; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 90; 91; CHECK-SCEV-INV: Starting {{.*}}Function pass manager run 92; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 93; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 94; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 95; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 96; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 97; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 98; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 99; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 100; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 101; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 102; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 103; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 104; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 105; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 106; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 107; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 108; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 109; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 110; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 111; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 112; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 113; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 114; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 115; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 116; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 117; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 118; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 119; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 120; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 121 122entry: 123 br label %l0.header 124 125l0.header: 126 %flag0 = load volatile i1, i1* %ptr 127 br i1 %flag0, label %l0.header, label %exit 128 129exit: 130 ret void 131} 132 133define void @nested_loops(i1* %ptr) { 134; CHECK-LOOP-INV: Starting {{.*}}Function pass manager run 135; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 136; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 137; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 138; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 139; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 140; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 141; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 142; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 143; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 144; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 145; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 146; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 147; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 148; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 149; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 150; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 151; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 152; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run. 153; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 154; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 155; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 156; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 157; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 158; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 159; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 160; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 161; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 162; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 163; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 164; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 165; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 166; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 167; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 168; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 169; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 170; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 171; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run. 172; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 173; 174; CHECK-SCEV-INV: Starting {{.*}}Function pass manager run 175; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 176; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 177; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 178; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 179; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 180; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 181; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 182; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 183; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 184; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 185; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 186; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 187; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 188; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 189; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 190; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 191; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 192; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run. 193; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 194; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 195; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 196; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 197; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 198; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 199; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 200; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 201; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 202; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 203; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 204; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 205; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 206; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 207; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 208; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 209; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run. 210; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 211 212entry: 213 br label %l.0.header 214 215l.0.header: 216 br label %l.0.0.header 217 218l.0.0.header: 219 %flag.0.0 = load volatile i1, i1* %ptr 220 br i1 %flag.0.0, label %l.0.0.header, label %l.0.latch 221 222l.0.latch: 223 %flag.0 = load volatile i1, i1* %ptr 224 br i1 %flag.0, label %l.0.header, label %exit 225 226exit: 227 ret void 228} 229 230define void @dead_loop() { 231; CHECK-LOOP-INV: Starting {{.*}}Function pass manager run 232; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 233; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 234; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 235; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis 236; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis 237; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 238; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 239; CHECK-LOOP-INV-NEXT: Running analysis: AAManager 240; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis 241; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 242; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis 243; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 244; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 245; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 246; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 247; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis 248; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 249; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis 250; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 251; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 252; CHECK-LOOP-INV-NEXT: Starting {{.*}}Function pass manager run 253; CHECK-LOOP-INV-NEXT: Running pass: LoopSimplifyPass 254; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis 255; CHECK-LOOP-INV-NEXT: Running pass: LCSSAPass 256; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run 257; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 258; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 259; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run. 260; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass 261; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run. 262; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run. 263; 264; CHECK-SCEV-INV: Starting {{.*}}Function pass manager run 265; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 266; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 267; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis 268; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis 269; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis 270; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 271; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 272; CHECK-SCEV-INV-NEXT: Running analysis: AAManager 273; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis 274; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 275; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis 276; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 277; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 278; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 279; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 280; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 281; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: <possibly invalidated loop> 282; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 283; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 284; CHECK-SCEV-INV-NEXT: Starting {{.*}}Function pass manager run 285; CHECK-SCEV-INV-NEXT: Running pass: LoopSimplifyPass 286; CHECK-SCEV-INV-NEXT: Running pass: LCSSAPass 287; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run 288; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis 289; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 290; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run. 291; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass 292; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run. 293; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run. 294; 295; CHECK-SCEV-INV-AFTER-DELETE-LABEL: Running pass: LoopSimplifyPass on dead_loop 296; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: LoopAnalysis 297; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: DominatorTreeAnalysis 298; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AssumptionAnalysis 299; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LCSSAPass 300; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run 301; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AAManager 302; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetLibraryAnalysis 303; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: ScalarEvolutionAnalysis 304; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetIRAnalysis 305; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop 306; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Loop pass manager run. 307; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: NoOpLoopPass 308; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopDeletionPass 309; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Clearing all analysis results for: 310; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Loop pass manager run. 311; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis 312; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: ScalarEvolutionAnalysis 313; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop 314; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Function pass manager run 315; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopSimplifyPass 316; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LCSSAPass 317; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run 318; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run. 319 320entry: 321 br label %l0.header 322 323l0.header: 324 br i1 false, label %l0.header, label %exit 325 326exit: 327 ret void 328} 329