1 // run-pass 2 3 #![allow(dead_code)] 4 // Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same 5 6 // pretty-expanded FIXME #23616 7 8 use std::ptr; 9 main()10pub fn main() { 11 let mut test = TestDescAndFn { 12 desc: TestDesc { 13 name: TestName::DynTestName("test".to_string()), 14 should_fail: false 15 }, 16 testfn: TestFn::DynTestFn(22), 17 }; 18 do_swap(&mut test); 19 } 20 do_swap(test: &mut TestDescAndFn)21fn do_swap(test: &mut TestDescAndFn) { 22 unsafe { 23 ptr::swap(test, test); 24 } 25 } 26 27 pub enum TestName { 28 DynTestName(String) 29 } 30 31 pub enum TestFn { 32 DynTestFn(isize), 33 DynBenchFn(isize), 34 } 35 36 pub struct TestDesc { 37 name: TestName, 38 should_fail: bool 39 } 40 41 pub struct TestDescAndFn { 42 desc: TestDesc, 43 testfn: TestFn, 44 } 45