about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/gvn.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/gvn.rs b/compiler/rustc_mir_transform/src/gvn.rs
index 0ef3cdbb337..1c5ab35281a 100644
--- a/compiler/rustc_mir_transform/src/gvn.rs
+++ b/compiler/rustc_mir_transform/src/gvn.rs
@@ -1046,6 +1046,9 @@ impl<'body, 'tcx> VnState<'body, 'tcx> {
 
         let mut from = operand.ty(self.local_decls, self.tcx);
         let mut value = self.simplify_operand(operand, location)?;
+        if from == to {
+            return Some(value);
+        }
 
         if let CastKind::PointerCoercion(ReifyFnPointer | ClosureFnPointer(_)) = kind {
             // Each reification of a generic fn may get a different pointer.