| //@ run-pass | |
| // allows aligned custom discriminant enums to cast into other types | |
| // See the issue #92464 for more info | |
| #[allow(dead_code)] | |
| #[repr(align(8))] | |
| enum Aligned { | |
| Zero = 0, | |
| One = 1, | |
| } | |
| fn main() { | |
| let aligned = Aligned::Zero; | |
| let fo = aligned as u8; | |
| println!("foo {}", fo); | |
| assert_eq!(fo, 0); | |
| println!("{}", tou8(Aligned::Zero)); | |
| assert_eq!(tou8(Aligned::Zero), 0); | |
| } | |
| #[inline(never)] | |
| fn tou8(al: Aligned) -> u8 { | |
| // Cast behind a function call so ConstProp does not see it | |
| // (so that we can test codegen). | |
| al as u8 | |
| } |