about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-01-18 22:59:52 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2023-01-27 18:22:45 +0000
commit8f1dbe54ea5e05725273ae8ac6c1dda15153fa7c (patch)
tree03aa0f0dfacf13ea114617245edad1b6cc99041f /compiler/rustc_mir_transform/src
parentd45815eb4ae2737b5fb8f4eeeb0eb3d784efeca3 (diff)
downloadrust-8f1dbe54ea5e05725273ae8ac6c1dda15153fa7c.tar.gz
rust-8f1dbe54ea5e05725273ae8ac6c1dda15153fa7c.zip
Discard raw pointers from SSA locals.
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/copy_prop.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/copy_prop.rs b/compiler/rustc_mir_transform/src/copy_prop.rs
index 13a18269585..bce307d368c 100644
--- a/compiler/rustc_mir_transform/src/copy_prop.rs
+++ b/compiler/rustc_mir_transform/src/copy_prop.rs
@@ -117,8 +117,10 @@ impl<'tcx> Visitor<'tcx> for SsaLocals {
                 self.assignments[local].insert(LocationExtended::Plain(loc));
                 self.assignment_order.push(local);
             }
-            PlaceContext::MutatingUse(_) => self.assignments[local] = Set1::Many,
-            // Immutable borrows and AddressOf are taken into account in `SsaLocals::new` by
+            // Anything can happen with raw pointers, so remove them.
+            PlaceContext::NonMutatingUse(NonMutatingUseContext::AddressOf)
+            | PlaceContext::MutatingUse(_) => self.assignments[local] = Set1::Many,
+            // Immutable borrows are taken into account in `SsaLocals::new` by
             // removing non-freeze locals.
             PlaceContext::NonMutatingUse(_) => {
                 let set = &mut self.assignments[local];