|  | //@ compile-flags: -C no-prepopulate-passes -Z mir-opt-level=0 | 
|  | // | 
|  |  | 
|  | #![crate_type = "lib"] | 
|  |  | 
|  | #[repr(align(64))] | 
|  | pub enum Align64 { | 
|  | A(u32), | 
|  | B(u32), | 
|  | } | 
|  |  | 
|  | pub struct Nested64 { | 
|  | a: u8, | 
|  | b: Align64, | 
|  | c: u16, | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @align64 | 
|  | #[no_mangle] | 
|  | pub fn align64(a: u32) -> Align64 { | 
|  | // CHECK: %a64 = alloca [64 x i8], align 64 | 
|  | // CHECK: call void @llvm.memcpy.{{.*}}(ptr align 64 %{{.*}}, ptr align 64 %{{.*}}, i{{[0-9]+}} 64, i1 false) | 
|  | let a64 = Align64::A(a); | 
|  | a64 | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @nested64 | 
|  | #[no_mangle] | 
|  | pub fn nested64(a: u8, b: u32, c: u16) -> Nested64 { | 
|  | // CHECK: %n64 = alloca [128 x i8], align 64 | 
|  | let n64 = Nested64 { a, b: Align64::B(b), c }; | 
|  | n64 | 
|  | } |