blob: d2a0e23a7200b537d06ef45e5342534d714f508c [file] [log] [blame]
Chandler Carruthf4252922017-02-10 08:26:58 +00001; 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
20define void @no_loops() {
21; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops
22; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
23; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis
24; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis
25; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis
26; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses
27; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis
28; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops
29; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
30; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run.
31;
32; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops
33; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis
34; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis
35; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis
36; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis
37; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses
38; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on no_loops
39; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run.
40
41entry:
42 ret void
43}
44
45define void @one_loop(i1* %ptr) {
46; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop
47; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
48; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis
49; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis
50; CHECK-LOOP-INV-NEXT: Running analysis: AAManager
51; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis
52; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
53; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000054; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000055; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
56; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
57; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
58; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis
59; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses
60; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: l0.header
61; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis
62; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000063; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000064; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop
65; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
66; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000067; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000068; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
69; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
70; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
71; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run.
72;
73; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop
74; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis
75; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis
76; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis
77; CHECK-SCEV-INV-NEXT: Running analysis: AAManager
78; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis
79; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
80; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000081; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000082; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
83; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
84; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
85; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis
86; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses
87; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: l0.header
88; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000089; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000090; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on one_loop
91; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +000092; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +000093; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
94; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
95; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
96; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run.
97
98entry:
99 br label %l0.header
100
101l0.header:
102 %flag0 = load volatile i1, i1* %ptr
103 br i1 %flag0, label %l0.header, label %exit
104
105exit:
106 ret void
107}
108
109define void @nested_loops(i1* %ptr) {
110; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops
111; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
112; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis
113; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis
114; CHECK-LOOP-INV-NEXT: Running analysis: AAManager
115; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis
116; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
117; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000118; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000119; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
120; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
121; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
122; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
123; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
124; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run.
125; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis
126; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses
127; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: l.0.header
128; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: l.0.0.header
129; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis
130; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000131; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000132; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops
133; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
134; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000135; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000136; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
137; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
138; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
139; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
140; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
141; CHECK-LOOP-INV: Finished {{.*}}Loop pass manager run.
142; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run.
143;
144; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops
145; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis
146; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis
147; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis
148; CHECK-SCEV-INV-NEXT: Running analysis: AAManager
149; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis
150; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
151; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000152; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000153; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
154; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
155; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
156; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
157; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
158; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run.
159; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis
160; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses
161; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: l.0.header
162; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: l.0.0.header
163; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000164; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000165; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on nested_loops
166; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000167; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000168; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
169; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
170; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
171; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
172; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
173; CHECK-SCEV-INV: Finished {{.*}}Loop pass manager run.
174; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run.
175
176entry:
177 br label %l.0.header
178
179l.0.header:
180 br label %l.0.0.header
181
182l.0.0.header:
183 %flag.0.0 = load volatile i1, i1* %ptr
184 br i1 %flag.0.0, label %l.0.0.header, label %l.0.latch
185
186l.0.latch:
187 %flag.0 = load volatile i1, i1* %ptr
188 br i1 %flag.0, label %l.0.header, label %exit
189
190exit:
191 ret void
192}
193
194define void @dead_loop() {
195; CHECK-LOOP-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
196; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
197; CHECK-LOOP-INV-NEXT: Running analysis: DominatorTreeAnalysis
198; CHECK-LOOP-INV-NEXT: Running analysis: AssumptionAnalysis
199; CHECK-LOOP-INV-NEXT: Running analysis: AAManager
200; CHECK-LOOP-INV-NEXT: Running analysis: TargetLibraryAnalysis
201; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
202; CHECK-LOOP-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000203; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000204; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
205; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
206; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
207; CHECK-LOOP-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}LoopAnalysis
208; CHECK-LOOP-INV-NEXT: Invalidating all non-preserved analyses
209; CHECK-LOOP-INV-NEXT: Clearing all analysis results for: l0.header
210; CHECK-LOOP-INV-NEXT: Invalidating analysis: LoopAnalysis
211; CHECK-LOOP-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000212; CHECK-LOOP-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000213; CHECK-LOOP-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
214; CHECK-LOOP-INV-NEXT: Running analysis: LoopAnalysis
215; CHECK-LOOP-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000216; CHECK-LOOP-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000217; CHECK-LOOP-INV-NEXT: Starting {{.*}}Loop pass manager run.
218; CHECK-LOOP-INV-NEXT: Running pass: NoOpLoopPass
219; CHECK-LOOP-INV-NEXT: Finished {{.*}}Loop pass manager run.
220; CHECK-LOOP-INV-NEXT: Finished {{.*}}Function pass manager run.
221;
222; CHECK-SCEV-INV-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
223; CHECK-SCEV-INV-NEXT: Running analysis: LoopAnalysis
224; CHECK-SCEV-INV-NEXT: Running analysis: DominatorTreeAnalysis
225; CHECK-SCEV-INV-NEXT: Running analysis: AssumptionAnalysis
226; CHECK-SCEV-INV-NEXT: Running analysis: AAManager
227; CHECK-SCEV-INV-NEXT: Running analysis: TargetLibraryAnalysis
228; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
229; CHECK-SCEV-INV-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000230; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000231; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
232; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
233; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
234; CHECK-SCEV-INV-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis
235; CHECK-SCEV-INV-NEXT: Invalidating all non-preserved analyses
236; CHECK-SCEV-INV-NEXT: Clearing all analysis results for: l0.header
237; CHECK-SCEV-INV-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000238; CHECK-SCEV-INV-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000239; CHECK-SCEV-INV-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
240; CHECK-SCEV-INV-NEXT: Running analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000241; CHECK-SCEV-INV-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000242; CHECK-SCEV-INV-NEXT: Starting {{.*}}Loop pass manager run.
243; CHECK-SCEV-INV-NEXT: Running pass: NoOpLoopPass
244; CHECK-SCEV-INV-NEXT: Finished {{.*}}Loop pass manager run.
245; CHECK-SCEV-INV-NEXT: Finished {{.*}}Function pass manager run.
246;
247; CHECK-SCEV-INV-AFTER-DELETE-LABEL: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
248; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: LoopAnalysis
249; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: DominatorTreeAnalysis
250; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AssumptionAnalysis
251; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: AAManager
252; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetLibraryAnalysis
253; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: ScalarEvolutionAnalysis
254; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: TargetIRAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000255; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000256; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Starting {{.*}}Loop pass manager run.
257; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: NoOpLoopPass
258; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: LoopDeletionPass
259; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Clearing all analysis results for:
260; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Loop pass manager run.
261; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating all non-preserved analyses
262; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ScalarEvolutionAnalysis
263; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating all non-preserved analyses
264; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: ScalarEvolutionAnalysis
Chandler Carruth7bc60282017-02-10 08:48:50 +0000265; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Invalidating analysis: InnerAnalysisManagerProxy<{{.*}}Loop
Chandler Carruthf4252922017-02-10 08:26:58 +0000266; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}> on dead_loop
267; CHECK-SCEV-INV-AFTER-DELETE-NEXT: Finished {{.*}}Function pass manager run.
268
269entry:
270 br label %l0.header
271
272l0.header:
273 br i1 false, label %l0.header, label %exit
274
275exit:
276 ret void
277}