1 // run-pass
2 #![allow(dead_code)]
3 #![allow(deprecated)]
4 
5 use std::mem;
6 
7 enum Tag {
8     TagInner(u64)
9 }
10 
11 struct Rec {
12     c8: u8,
13     t: Tag
14 }
15 
mk_rec() -> Rec16 fn mk_rec() -> Rec {
17     return Rec { c8:0, t:Tag::TagInner(0) };
18 }
19 
is_u64_aligned(u: &Tag) -> bool20 fn is_u64_aligned(u: &Tag) -> bool {
21     let p: usize = unsafe { mem::transmute(u) };
22     let u64_align = std::mem::min_align_of::<u64>();
23     return (p & (u64_align - 1)) == 0;
24 }
25 
main()26 pub fn main() {
27     let x = mk_rec();
28     assert!(is_u64_aligned(&x.t));
29 }
30