]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/DebugInfo/PDB/Inputs/every-enum.cpp
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / DebugInfo / PDB / Inputs / every-enum.cpp
1 // Build with "cl.exe /Zi /GR- /GX- every-enum.cpp /link /debug /nodefaultlib /incremental:no /entry:main"
2
3 #include <stdint.h>
4
5 // clang-format off
6 void *__purecall = 0;
7
8 void __cdecl operator delete(void *,unsigned int) {}
9 void __cdecl operator delete(void *,unsigned __int64) {}
10
11
12 enum I8 : int8_t {
13   I8A = INT8_MIN,
14   I8B = 0,
15   I8C = INT8_MAX
16 };
17
18 enum I16 : int16_t {
19   I16A = INT16_MIN,
20   I16B = 0,
21   I16C = INT16_MAX,
22 };
23
24 enum I32 : int32_t {
25   I32A = INT32_MIN,
26   I32B = 0,
27   I32C = INT32_MAX,
28 };
29
30 enum I64 : int64_t {
31   I64A = INT64_MIN,
32   I64B = 0,
33   I64C = INT64_MAX,
34 };
35
36 enum U8 : uint8_t {
37   U8A = 0,
38   U8B = UINT8_MAX
39 };
40
41 enum U16 : uint16_t {
42   U16A = 0,
43   U16B = UINT16_MAX,
44 };
45
46 enum U32 : uint32_t {
47   U32A = 0,
48   U32B = UINT32_MAX,
49 };
50
51 enum U64 : uint64_t {
52   U64A = 0,
53   U64B = UINT64_MAX,
54 };
55
56 enum Char16 : char16_t {
57   C16A = u'a',
58   C16B = u'b',
59 };
60
61 enum Char32 : char32_t {
62   C32A = U'a',
63   C32B = U'b',
64 };
65
66 enum WChar : wchar_t {
67   WCA = L'a',
68   WCB = L'b',
69 };
70
71 enum Bool : bool {
72   BA = true,
73   BB = false
74 };
75
76 enum class EC {
77   A = 1,
78   B = 2
79 };
80
81 struct Struct {
82   enum Nested {
83     A = 1,
84     B = 2
85   };
86 };
87
88 template<typename T> void f(T t) {}
89
90 int main(int argc, char **argv) {
91   f(I8A);
92   f(I16A);
93   f(I32A);
94   f(I64A);
95   f(U8A);
96   f(U16A);
97   f(U32A);
98   f(U64A);
99
100   f(C16A);
101   f(C32A);
102   f(WCA);
103   f(BA);
104
105
106   f(EC::A);
107   f(Struct::A);
108
109   f<const volatile EC>(EC::A);
110 }