about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2025-03-11 16:05:34 +0000
committerMichael Goulet <michael@errs.io>2025-03-15 18:10:55 +0000
commit13134dd096db66100db44e08cfa73b7aa9331cf2 (patch)
treeba32a681569c13b54c0203df6e7de4a4bf06b929 /compiler/rustc_mir_transform/src
parent4d30011f6c616be074ba655a75e5d55441232bbb (diff)
downloadrust-13134dd096db66100db44e08cfa73b7aa9331cf2.tar.gz
rust-13134dd096db66100db44e08cfa73b7aa9331cf2.zip
Don't drop Rvalue::WrapUnsafeBinder during GVN
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/gvn.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/gvn.rs b/compiler/rustc_mir_transform/src/gvn.rs
index 981dedd5b5c..0a54c780f31 100644
--- a/compiler/rustc_mir_transform/src/gvn.rs
+++ b/compiler/rustc_mir_transform/src/gvn.rs
@@ -872,8 +872,14 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
                 self.simplify_place_projection(place, location);
                 return self.new_pointer(*place, AddressKind::Address(mutbl));
             }
-            Rvalue::WrapUnsafeBinder(ref mut op, _) => {
-                return self.simplify_operand(op, location);
+            Rvalue::WrapUnsafeBinder(ref mut op, ty) => {
+                let value = self.simplify_operand(op, location)?;
+                Value::Cast {
+                    kind: CastKind::Transmute,
+                    value,
+                    from: op.ty(self.local_decls, self.tcx),
+                    to: ty,
+                }
             }
 
             // Operations.