diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-05-28 12:55:36 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-09-28 17:08:54 +0000 |
| commit | 3816c15b88651db3c1f1b56bbd78edec11045fb0 (patch) | |
| tree | eeb1723284ab69ed006d9174e89b8113415ef6d1 /compiler/rustc_mir_transform | |
| parent | 255ca184541d9f411cadfc3306ef4f6435ac4eb9 (diff) | |
| download | rust-3816c15b88651db3c1f1b56bbd78edec11045fb0.tar.gz rust-3816c15b88651db3c1f1b56bbd78edec11045fb0.zip | |
Only visit reachable nodes in SsaLocals.
Diffstat (limited to 'compiler/rustc_mir_transform')
| -rw-r--r-- | compiler/rustc_mir_transform/src/ssa.rs | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/compiler/rustc_mir_transform/src/ssa.rs b/compiler/rustc_mir_transform/src/ssa.rs index 3a675752fba..af9514ed6bb 100644 --- a/compiler/rustc_mir_transform/src/ssa.rs +++ b/compiler/rustc_mir_transform/src/ssa.rs @@ -78,14 +78,10 @@ impl SsaLocals { visitor.assignments[local] = Set1::One(LocationExtended::Arg); } - if body.basic_blocks.len() > 2 { - for (bb, data) in traversal::reverse_postorder(body) { - visitor.visit_basic_block_data(bb, data); - } - } else { - for (bb, data) in body.basic_blocks.iter_enumerated() { - visitor.visit_basic_block_data(bb, data); - } + // For SSA assignments, a RPO visit will see the assignment before it sees any use. + // We only visit reachable nodes: computing `dominates` on an unreachable node ICEs. + for (bb, data) in traversal::reverse_postorder(body) { + visitor.visit_basic_block_data(bb, data); } for var_debug_info in &body.var_debug_info { |
