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 20 define 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 57 entry: 58 ret void 59 } 60 61 define 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 130 entry: 131 br label %l0.header 132 133 l0.header: 134 %flag0 = load volatile i1, i1* %ptr 135 br i1 %flag0, label %l0.header, label %exit 136 137 exit: 138 ret void 139 } 140 141 define 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 224 entry: 225 br label %l.0.header 226 227 l.0.header: 228 br label %l.0.0.header 229 230 l.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 234 l.0.latch: 235 %flag.0 = load volatile i1, i1* %ptr 236 br i1 %flag.0, label %l.0.header, label %exit 237 238 exit: 239 ret void 240 } 241 242 define 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 341 entry: 342 br label %l0.header 343 344 l0.header: 345 br i1 false, label %l0.header, label %exit 346 347 exit: 348 ret void 349 } 350