| //@ test-mir-pass: GVN | 
 |  | 
 | #![feature(custom_mir, core_intrinsics)] | 
 |  | 
 | // Check that we do not create overlapping assignments. | 
 |  | 
 | use std::intrinsics::mir::*; | 
 |  | 
 | // EMIT_MIR gvn_overlapping.overlapping.GVN.diff | 
 | #[custom_mir(dialect = "runtime")] | 
 | fn overlapping(_17: Adt) { | 
 |     // CHECK-LABEL: fn overlapping( | 
 |     // CHECK: let mut [[PTR:.*]]: *mut Adt; | 
 |     // CHECK: (*[[PTR]]) = Adt::Some(copy {{.*}}); | 
 |     mir! { | 
 |         let _33: *mut Adt; | 
 |         let _48: u32; | 
 |         let _73: &Adt; | 
 |         { | 
 |             _33 = core::ptr::addr_of_mut!(_17); | 
 |             _73 = &(*_33); | 
 |             _48 = Field(Variant((*_73), 1), 0); | 
 |             (*_33) = Adt::Some(_48); | 
 |             Return() | 
 |         } | 
 |     } | 
 | } | 
 |  | 
 | fn main() { | 
 |     overlapping(Adt::Some(0)); | 
 | } | 
 |  | 
 | enum Adt { | 
 |     None, | 
 |     Some(u32), | 
 | } |