// run-pass

#![allow(dead_code)]
// Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same

// pretty-expanded FIXME #23616

use std::ptr;

pub fn main() {
    let mut test = TestDescAndFn {
        desc: TestDesc {
            name: TestName::DynTestName("test".to_string()),
            should_fail: false
        },
        testfn: TestFn::DynTestFn(22),
    };
    do_swap(&mut test);
}

fn do_swap(test: &mut TestDescAndFn) {
    unsafe {
        ptr::swap(test, test);
    }
}

pub enum TestName {
    DynTestName(String)
}

pub enum TestFn {
    DynTestFn(isize),
    DynBenchFn(isize),
}

pub struct TestDesc {
    name: TestName,
    should_fail: bool
}

pub struct TestDescAndFn {
    desc: TestDesc,
    testfn: TestFn,
}
