Files
clang-p2996/llvm/test/DebugInfo/PDB/Inputs/every-enum.cpp
Zachary Turner bdf0381e21 [PDB] Make the native reader support enumerators.
Previously we would dump the names of enum types, but not their
enumerator values.  This adds support for enumerator values.  In
doing so, we have to introduce a general purpose mechanism for
caching symbol indices of field list members.  Unlike global
types, FieldList members do not have a TypeIndex.  So instead,
we identify them by the pair {TypeIndexOfFieldList, IndexInFieldList}.

llvm-svn: 342415
2018-09-17 21:08:11 +00:00

111 lines
1.4 KiB
C++

// Build with "cl.exe /Zi /GR- /GX- every-enum.cpp /link /debug /nodefaultlib /incremental:no /entry:main"
#include <stdint.h>
// clang-format off
void *__purecall = 0;
void __cdecl operator delete(void *,unsigned int) {}
void __cdecl operator delete(void *,unsigned __int64) {}
enum I8 : int8_t {
I8A = INT8_MIN,
I8B = 0,
I8C = INT8_MAX
};
enum I16 : int16_t {
I16A = INT16_MIN,
I16B = 0,
I16C = INT16_MAX,
};
enum I32 : int32_t {
I32A = INT32_MIN,
I32B = 0,
I32C = INT32_MAX,
};
enum I64 : int64_t {
I64A = INT64_MIN,
I64B = 0,
I64C = INT64_MAX,
};
enum U8 : uint8_t {
U8A = 0,
U8B = UINT8_MAX
};
enum U16 : uint16_t {
U16A = 0,
U16B = UINT16_MAX,
};
enum U32 : uint32_t {
U32A = 0,
U32B = UINT32_MAX,
};
enum U64 : uint64_t {
U64A = 0,
U64B = UINT64_MAX,
};
enum Char16 : char16_t {
C16A = u'a',
C16B = u'b',
};
enum Char32 : char32_t {
C32A = U'a',
C32B = U'b',
};
enum WChar : wchar_t {
WCA = L'a',
WCB = L'b',
};
enum Bool : bool {
BA = true,
BB = false
};
enum class EC {
A = 1,
B = 2
};
struct Struct {
enum Nested {
A = 1,
B = 2
};
};
template<typename T> void f(T t) {}
int main(int argc, char **argv) {
f(I8A);
f(I16A);
f(I32A);
f(I64A);
f(U8A);
f(U16A);
f(U32A);
f(U64A);
f(C16A);
f(C32A);
f(WCA);
f(BA);
f(EC::A);
f(Struct::A);
f<const volatile EC>(EC::A);
}