Auto merge of #140751 - GuillaumeGomez:rollup-eahw4ta, r=GuillaumeGomez · rust-lang/rust@ae3e8c6 (original) (raw)
`@@ -5,7 +5,7 @@ use rustc_middle::mir::{
`
5
5
`};
`
6
6
``
7
7
`use super::visitor::ResultsVisitor;
`
8
``
`-
use super::{Analysis, Effect, EffectIndex, Results};
`
``
8
`+
use super::{Analysis, Effect, EffectIndex};
`
9
9
``
10
10
`pub trait Direction {
`
11
11
`const IS_FORWARD: bool;
`
`@@ -36,13 +36,13 @@ pub trait Direction {
`
36
36
`A: Analysis<'tcx>;
`
37
37
``
38
38
`` /// Called by ResultsVisitor
to recompute the analysis domain values for
``
39
``
`-
/// all locations in a basic block (starting from the entry value stored
`
40
``
`` -
/// in Results
) and to visit them with vis
.
``
``
39
`` +
/// all locations in a basic block (starting from entry_state
and to
``
``
40
`` +
/// visit them with vis
.
``
41
41
`fn visit_results_in_block<'mir, 'tcx, A>(
`
42
42
`state: &mut A::Domain,
`
43
43
`block: BasicBlock,
`
44
44
`block_data: &'mir mir::BasicBlockData<'tcx>,
`
45
``
`-
results: &mut Results<'tcx, A>,
`
``
45
`+
analysis: &mut A,
`
46
46
`vis: &mut impl ResultsVisitor<'tcx, A>,
`
47
47
`) where
`
48
48
`A: Analysis<'tcx>;
`
`@@ -211,28 +211,26 @@ impl Direction for Backward {
`
211
211
`state: &mut A::Domain,
`
212
212
`block: BasicBlock,
`
213
213
`block_data: &'mir mir::BasicBlockData<'tcx>,
`
214
``
`-
results: &mut Results<'tcx, A>,
`
``
214
`+
analysis: &mut A,
`
215
215
`vis: &mut impl ResultsVisitor<'tcx, A>,
`
216
216
`) where
`
217
217
`A: Analysis<'tcx>,
`
218
218
`{
`
219
``
`-
state.clone_from(results.entry_set_for_block(block));
`
220
``
-
221
219
` vis.visit_block_end(state);
`
222
220
``
223
221
`let loc = Location { block, statement_index: block_data.statements.len() };
`
224
222
`let term = block_data.terminator();
`
225
``
`-
results.analysis.apply_early_terminator_effect(state, term, loc);
`
226
``
`-
vis.visit_after_early_terminator_effect(results, state, term, loc);
`
227
``
`-
results.analysis.apply_primary_terminator_effect(state, term, loc);
`
228
``
`-
vis.visit_after_primary_terminator_effect(results, state, term, loc);
`
``
223
`+
analysis.apply_early_terminator_effect(state, term, loc);
`
``
224
`+
vis.visit_after_early_terminator_effect(analysis, state, term, loc);
`
``
225
`+
analysis.apply_primary_terminator_effect(state, term, loc);
`
``
226
`+
vis.visit_after_primary_terminator_effect(analysis, state, term, loc);
`
229
227
``
230
228
`for (statement_index, stmt) in block_data.statements.iter().enumerate().rev() {
`
231
229
`let loc = Location { block, statement_index };
`
232
``
`-
results.analysis.apply_early_statement_effect(state, stmt, loc);
`
233
``
`-
vis.visit_after_early_statement_effect(results, state, stmt, loc);
`
234
``
`-
results.analysis.apply_primary_statement_effect(state, stmt, loc);
`
235
``
`-
vis.visit_after_primary_statement_effect(results, state, stmt, loc);
`
``
230
`+
analysis.apply_early_statement_effect(state, stmt, loc);
`
``
231
`+
vis.visit_after_early_statement_effect(analysis, state, stmt, loc);
`
``
232
`+
analysis.apply_primary_statement_effect(state, stmt, loc);
`
``
233
`+
vis.visit_after_primary_statement_effect(analysis, state, stmt, loc);
`
236
234
`}
`
237
235
``
238
236
` vis.visit_block_start(state);
`
`@@ -393,29 +391,27 @@ impl Direction for Forward {
`
393
391
`state: &mut A::Domain,
`
394
392
`block: BasicBlock,
`
395
393
`block_data: &'mir mir::BasicBlockData<'tcx>,
`
396
``
`-
results: &mut Results<'tcx, A>,
`
``
394
`+
analysis: &mut A,
`
397
395
`vis: &mut impl ResultsVisitor<'tcx, A>,
`
398
396
`) where
`
399
397
`A: Analysis<'tcx>,
`
400
398
`{
`
401
``
`-
state.clone_from(results.entry_set_for_block(block));
`
402
``
-
403
399
` vis.visit_block_start(state);
`
404
400
``
405
401
`for (statement_index, stmt) in block_data.statements.iter().enumerate() {
`
406
402
`let loc = Location { block, statement_index };
`
407
``
`-
results.analysis.apply_early_statement_effect(state, stmt, loc);
`
408
``
`-
vis.visit_after_early_statement_effect(results, state, stmt, loc);
`
409
``
`-
results.analysis.apply_primary_statement_effect(state, stmt, loc);
`
410
``
`-
vis.visit_after_primary_statement_effect(results, state, stmt, loc);
`
``
403
`+
analysis.apply_early_statement_effect(state, stmt, loc);
`
``
404
`+
vis.visit_after_early_statement_effect(analysis, state, stmt, loc);
`
``
405
`+
analysis.apply_primary_statement_effect(state, stmt, loc);
`
``
406
`+
vis.visit_after_primary_statement_effect(analysis, state, stmt, loc);
`
411
407
`}
`
412
408
``
413
409
`let loc = Location { block, statement_index: block_data.statements.len() };
`
414
410
`let term = block_data.terminator();
`
415
``
`-
results.analysis.apply_early_terminator_effect(state, term, loc);
`
416
``
`-
vis.visit_after_early_terminator_effect(results, state, term, loc);
`
417
``
`-
results.analysis.apply_primary_terminator_effect(state, term, loc);
`
418
``
`-
vis.visit_after_primary_terminator_effect(results, state, term, loc);
`
``
411
`+
analysis.apply_early_terminator_effect(state, term, loc);
`
``
412
`+
vis.visit_after_early_terminator_effect(analysis, state, term, loc);
`
``
413
`+
analysis.apply_primary_terminator_effect(state, term, loc);
`
``
414
`+
vis.visit_after_primary_terminator_effect(analysis, state, term, loc);
`
419
415
``
420
416
` vis.visit_block_end(state);
`
421
417
`}
`