Home | History | Annotate | Download | only in Other
      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