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