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

`}

`