[PowerPC] Don't run BV DAG Combine before legalization if it assumes legal types
[llvm-core.git] / test / Other / loop-pm-invalidation.ll
bloba6f5302462d1dee08bb444ed86b6a51c9ed2e4db
1 ; Test that the loop PM infrastructure is invalidated appropriately.
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
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
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
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.
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.
57 entry:
58   ret void
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.
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.
130 entry:
131   br label %l0.header
133 l0.header:
134   %flag0 = load volatile i1, i1* %ptr
135   br i1 %flag0, label %l0.header, label %exit
137 exit:
138   ret void
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.
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.
224 entry:
225   br label %l.0.header
227 l.0.header:
228   br label %l.0.0.header
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
234 l.0.latch:
235   %flag.0 = load volatile i1, i1* %ptr
236   br i1 %flag.0, label %l.0.header, label %exit
238 exit:
239   ret void
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.
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.
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.
341 entry:
342   br label %l0.header
344 l0.header:
345   br i1 false, label %l0.header, label %exit
347 exit:
348   ret void