#![crate_type = "lib"] //@ compile-flags: -O use std::mem; fn foo(a: &mut T, b: T) -> bool { let b = Some(mem::replace(a, b)); let ret = b.is_some(); mem::forget(b); return ret; } // CHECK-LABEL: @foo_u32 // CHECK: store i32 // CHECK-NEXT: ret i1 true #[no_mangle] pub fn foo_u32(a: &mut u32, b: u32) -> bool { foo(a, b) } // CHECK-LABEL: @foo_box // CHECK: store ptr // CHECK-NEXT: ret i1 true #[no_mangle] pub fn foo_box(a: &mut Box, b: Box) -> bool { foo(a, b) }