// { dg-output "123\r*\n80\r*\n" }
extern "C" {
    fn printf(s: *const i8, ...);
}
enum Foo {
    C(i32),
    D { x: i32, y: i32 },
}
fn inspect(f: Foo) -> i32 {
    match f {
        Foo::C(x) => x,
        Foo::D { x, y } => y,
    }
}
fn main() -> i32 {
    let a = Foo::C(123);
    let b = Foo::D { x: 20, y: 80 };
    let result = inspect(a);
    unsafe {
        let a = "%i\n\0";
        let b = a as *const str;
        let c = b as *const i8;
        printf(c, result);
    }
    let result = inspect(b);
    unsafe {
        let a = "%i\n\0";
        let b = a as *const str;
        let c = b as *const i8;
        printf(c, result);
    }
    0
}