blob: e65618f9774ba6cb2067a0cf30c132595a298974 [file] [edit]
// REQUIRES: lld, x86
// RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -GS- -c /Fo%t.obj -- %s
// RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb
// RUN: %lldb -f %t.exe -o "type lookup Foo" | FileCheck %s
enum class U8Enum : unsigned char {
Max = 255,
};
enum class I8Enum : char {
Min = 127,
Max = -128,
};
enum class U16Enum : unsigned short {
Max = 65535,
};
enum class I16Enum : short {
Min = -32768,
Max = 32767,
};
enum class U32Enum : unsigned {
Max = 4294967295U,
};
enum class I32Enum : int {
Min = -2147483648,
Max = 2147483647,
};
enum class U64Enum : unsigned long long {
Max = 18446744073709551615ULL,
};
enum class I64Enum : long long {
Min = -9223372036854775807LL - 1,
Max = 9223372036854775807LL,
};
// CHECK: struct Foo {
struct Foo {
// CHECK-NEXT: static const U8Enum u8_enum_max = 255Ui8;
static constexpr U8Enum u8_enum_max = U8Enum::Max;
// CHECK-NEXT: static const I8Enum i8_enum_min = 127i8;
static constexpr I8Enum i8_enum_min = I8Enum::Min;
// CHECK-NEXT: static const I8Enum i8_enum_max = -128i8;
static constexpr I8Enum i8_enum_max = I8Enum::Max;
// CHECK-NEXT: static const U16Enum u16_enum_max = 65535Ui16;
static constexpr U16Enum u16_enum_max = U16Enum::Max;
// CHECK-NEXT: static const I16Enum i16_enum_min = -32768i16;
static constexpr I16Enum i16_enum_min = I16Enum::Min;
// CHECK-NEXT: static const I16Enum i16_enum_max = 32767i16;
static constexpr I16Enum i16_enum_max = I16Enum::Max;
// CHECK-NEXT: static const U32Enum u32_enum_max = 4294967295U;
static constexpr U32Enum u32_enum_max = U32Enum::Max;
// CHECK-NEXT: static const I32Enum i32_enum_min = -2147483648;
static constexpr I32Enum i32_enum_min = I32Enum::Min;
// CHECK-NEXT: static const I32Enum i32_enum_max = 2147483647;
static constexpr I32Enum i32_enum_max = I32Enum::Max;
// CHECK-NEXT: static const U64Enum u64_enum_max = 18446744073709551615ULL;
static constexpr U64Enum u64_enum_max = U64Enum::Max;
// CHECK-NEXT: static const I64Enum i64_enum_min = -9223372036854775808LL;
static constexpr I64Enum i64_enum_min = I64Enum::Min;
// CHECK-NEXT: static const I64Enum i64_enum_max = 9223372036854775807LL;
static constexpr I64Enum i64_enum_max = I64Enum::Max;
// CHECK-NEXT: static const unsigned char u8_max = 255Ui8;
static constexpr unsigned char u8_max = 255;
// CHECK-NEXT: static const char i8_min = -128i8;
static constexpr char i8_min = -128;
// CHECK-NEXT: static const char i8_max = 127i8;
static constexpr char i8_max = 127;
// CHECK-NEXT: static const unsigned short u16_max = 65535Ui16;
static constexpr unsigned short u16_max = 65535;
// CHECK-NEXT: static const short i16_min = -32768i16;
static constexpr short i16_min = -32767 - 1;
// CHECK-NEXT: static const short i16_max = 32767i16;
static constexpr short i16_max = 32767;
// CHECK-NEXT: static const unsigned int u32_max = 4294967295U;
static constexpr unsigned u32_max = 4294967295;
// CHECK-NEXT: static const int i32_min = -2147483648;
static constexpr int i32_min = -2147483648;
// CHECK-NEXT: static const int i32_max = 2147483647;
static constexpr int i32_max = 2147483647;
// CHECK-NEXT: static const unsigned long long u64_max = 18446744073709551615ULL;
static constexpr unsigned long long u64_max = 18446744073709551615ULL;
// CHECK-NEXT: static const long long i64_min = -9223372036854775808LL;
static constexpr long long i64_min = -9223372036854775807LL - 1;
// CHECK-NEXT: static const long long i64_max = 9223372036854775807LL;
static constexpr long long i64_max = 9223372036854775807LL;
// CHECK-NEXT: int i;
int i;
};
int main() {
Foo f{42};
return f.i;
}