about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-01-22 20:39:44 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2023-01-27 18:22:45 +0000
commit263da251af6b1735487add274a4ed09487c69412 (patch)
tree635a2418b32943f44d07722428ab336a50aa0ab7
parentd29dc057ba53063a9ce7f1b307a89759a096f4ac (diff)
downloadrust-263da251af6b1735487add274a4ed09487c69412.tar.gz
rust-263da251af6b1735487add274a4ed09487c69412.zip
Use successor location for dominator check.
The assignment is complete only after the statement.
This marks self-assignments `x = x + 1` as non-sSA.
-rw-r--r--compiler/rustc_mir_transform/src/ssa.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_mir_transform/src/ssa.rs b/compiler/rustc_mir_transform/src/ssa.rs
index b6e0c6e6150..bc3fe65cf6c 100644
--- a/compiler/rustc_mir_transform/src/ssa.rs
+++ b/compiler/rustc_mir_transform/src/ssa.rs
@@ -162,7 +162,7 @@ impl<'tcx> Visitor<'tcx> for SsaVisitor {
                     Set1::Empty | Set1::Many => false,
                     Set1::One(LocationExtended::Arg) => true,
                     Set1::One(LocationExtended::Plain(assign)) => {
-                        assign.dominates(loc, &self.dominators)
+                        assign.successor_within_block().dominates(loc, &self.dominators)
                     }
                 };
                 // We are visiting a use that is not dominated by an assignment.