]> git.proxmox.com Git - rustc.git/blob - src/test/codegen/align-enum.rs
New upstream version 1.41.1+dfsg1
[rustc.git] / src / test / codegen / align-enum.rs
1 // compile-flags: -C no-prepopulate-passes
2 // ignore-tidy-linelength
3
4 #![crate_type = "lib"]
5
6 #[repr(align(64))]
7 pub enum Align64 {
8 A(u32),
9 B(u32),
10 }
11 // CHECK: %Align64 = type { [0 x i32], i32, [15 x i32] }
12
13 pub struct Nested64 {
14 a: u8,
15 b: Align64,
16 c: u16,
17 }
18
19 // CHECK-LABEL: @align64
20 #[no_mangle]
21 pub fn align64(a: u32) -> Align64 {
22 // CHECK: %a64 = alloca %Align64, align 64
23 // CHECK: call void @llvm.memcpy.{{.*}}(i8* align 64 %{{.*}}, i8* align 64 %{{.*}}, i{{[0-9]+}} 64, i1 false)
24 let a64 = Align64::A(a);
25 a64
26 }
27
28 // CHECK-LABEL: @nested64
29 #[no_mangle]
30 pub fn nested64(a: u8, b: u32, c: u16) -> Nested64 {
31 // CHECK: %n64 = alloca %Nested64, align 64
32 let n64 = Nested64 { a, b: Align64::B(b), c };
33 n64
34 }