about summary refs log tree commit diff
path: root/tests/run-make/repr128-dwarf/main.rs
blob: a8a414fd72e401cc3886e1a173ca092cd530c4ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Use .to_le() to ensure that the bytes are in the same order on both little- and big-endian
// platforms.

#[repr(u128)]
pub enum U128Enum {
    U128A = 0_u128.to_le(),
    U128B = 1_u128.to_le(),
    U128C = (u64::MAX as u128 + 1).to_le(),
    U128D = u128::MAX.to_le(),
}

#[repr(i128)]
pub enum I128Enum {
    I128A = 0_i128.to_le(),
    I128B = (-1_i128).to_le(),
    I128C = i128::MIN.to_le(),
    I128D = i128::MAX.to_le(),
}

#[cfg(not(old_llvm))]
#[repr(u128)]
pub enum U128VariantEnum {
    VariantU128A(u8) = 0_u128.to_le(),
    VariantU128B = 1_u128.to_le(),
    VariantU128C = (u64::MAX as u128 + 1).to_le(),
    VariantU128D = u128::MAX.to_le(),
}

#[cfg(not(old_llvm))]
#[repr(i128)]
pub enum I128VariantEnum {
    VariantI128A(u8) = 0_i128.to_le(),
    VariantI128B = (-1_i128).to_le(),
    VariantI128C = i128::MIN.to_le(),
    VariantI128D = i128::MAX.to_le(),
}

pub fn f(_: U128Enum, _: I128Enum) {}

#[cfg(not(old_llvm))]
pub fn g(_: U128VariantEnum, _: I128VariantEnum) {}

fn main() {
    f(U128Enum::U128A, I128Enum::I128A);
    #[cfg(not(old_llvm))]
    {
        g(U128VariantEnum::VariantU128A(1), I128VariantEnum::VariantI128A(2));
    }
}