about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-05-28 12:55:36 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2023-09-28 17:08:54 +0000
commit3816c15b88651db3c1f1b56bbd78edec11045fb0 (patch)
treeeeb1723284ab69ed006d9174e89b8113415ef6d1 /compiler/rustc_mir_transform
parent255ca184541d9f411cadfc3306ef4f6435ac4eb9 (diff)
downloadrust-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.rs12
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 {