]> git.proxmox.com Git - rustc.git/blame - src/test/codegen/align-enum.rs
New upstream version 1.45.0+dfsg1
[rustc.git] / src / test / codegen / align-enum.rs
CommitLineData
f9f354fc 1// compile-flags: -C no-prepopulate-passes -Z mir-opt-level=0
9fa01778 2// ignore-tidy-linelength
9fa01778
XL
3
4#![crate_type = "lib"]
9fa01778
XL
5
6#[repr(align(64))]
7pub enum Align64 {
8 A(u32),
9 B(u32),
10}
11// CHECK: %Align64 = type { [0 x i32], i32, [15 x i32] }
12
13pub struct Nested64 {
14 a: u8,
15 b: Align64,
16 c: u16,
17}
18
19// CHECK-LABEL: @align64
20#[no_mangle]
21pub 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]
30pub 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}