//@ unit-test: GVN // EMIT_MIR address_of_pair.fn0.GVN.diff pub fn fn0() -> bool { // CHECK-LABEL: fn fn0( // CHECK: debug pair => [[pair:_.*]]; // CHECK: debug ptr => [[ptr:_.*]]; // CHECK: debug ret => [[ret:_.*]]; // CHECK: (*[[ptr]]) = const true; // CHECK-NOT: = const false; // CHECK-NOT: = const true; // CHECK: [[tmp:_.*]] = ([[pair]].1: bool); // CHECK-NOT: = const false; // CHECK-NOT: = const true; // CHECK: [[ret]] = Not(move [[tmp]]); // CHECK-NOT: = const false; // CHECK-NOT: = const true; // CHECK: _0 = [[ret]]; let mut pair = (1, false); let ptr = core::ptr::addr_of_mut!(pair.1); pair = (1, false); unsafe { *ptr = true; } let ret = !pair.1; return ret; } pub fn main() { println!("{}", fn0()); }