diff options
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/gvn.rs | 3 |
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. |
