From 263da251af6b1735487add274a4ed09487c69412 Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Sun, 22 Jan 2023 20:39:44 +0000 Subject: [PATCH] Use successor location for dominator check. The assignment is complete only after the statement. This marks self-assignments `x = x + 1` as non-sSA. --- compiler/rustc_mir_transform/src/ssa.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_mir_transform/src/ssa.rs b/compiler/rustc_mir_transform/src/ssa.rs index b6e0c6e61509..bc3fe65cf6c3 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.