1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant//                     The LLVM Compiler Infrastructure
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===//
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// test <stdint.h>
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdint.h>
134dc5b2198d1aa4ab585a3d4a87ee9626d681f9f7Dan Albert#include <cstddef>
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <csignal>
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cwctype>
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <climits>
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <type_traits>
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <limits>
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert>
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main()
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int8_t
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int8_t)*CHAR_BIT == 8,
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int8_t)*CHAR_BIT == 8");
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int8_t>::value,
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int8_t>::value");
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int16_t
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int16_t)*CHAR_BIT == 16,
30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int16_t)*CHAR_BIT == 16");
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int16_t>::value,
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int16_t>::value");
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int32_t
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int32_t)*CHAR_BIT == 32,
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int32_t)*CHAR_BIT == 32");
36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int32_t>::value,
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int32_t>::value");
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int64_t
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int64_t)*CHAR_BIT == 64,
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int64_t)*CHAR_BIT == 64");
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int64_t>::value,
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int64_t>::value");
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint8_t
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint8_t)*CHAR_BIT == 8,
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint8_t)*CHAR_BIT == 8");
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint8_t>::value,
48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint8_t>::value");
49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint16_t
50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint16_t)*CHAR_BIT == 16,
51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint16_t)*CHAR_BIT == 16");
52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint16_t>::value,
53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint16_t>::value");
54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint32_t
55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint32_t)*CHAR_BIT == 32,
56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint32_t)*CHAR_BIT == 32");
57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint32_t>::value,
58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint32_t>::value");
59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint64_t
60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint64_t)*CHAR_BIT == 64,
61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint64_t)*CHAR_BIT == 64");
62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint64_t>::value,
63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint64_t>::value");
64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_least8_t
66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_least8_t)*CHAR_BIT >= 8,
67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_least8_t)*CHAR_BIT >= 8");
68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_least8_t>::value,
69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_least8_t>::value");
70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_least16_t
71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_least16_t)*CHAR_BIT >= 16,
72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_least16_t)*CHAR_BIT >= 16");
73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_least16_t>::value,
74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_least16_t>::value");
75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_least32_t
76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_least32_t)*CHAR_BIT >= 32,
77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_least32_t)*CHAR_BIT >= 32");
78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_least32_t>::value,
79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_least32_t>::value");
80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_least64_t
81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_least64_t)*CHAR_BIT >= 64,
82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_least64_t)*CHAR_BIT >= 64");
83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_least64_t>::value,
84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_least64_t>::value");
85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_least8_t
87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_least8_t)*CHAR_BIT >= 8,
88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_least8_t)*CHAR_BIT >= 8");
89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_least8_t>::value,
90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_least8_t>::value");
91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_least16_t
92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_least16_t)*CHAR_BIT >= 16,
93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_least16_t)*CHAR_BIT >= 16");
94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_least16_t>::value,
95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_least16_t>::value");
96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_least32_t
97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_least32_t)*CHAR_BIT >= 32,
98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_least32_t)*CHAR_BIT >= 32");
99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_least32_t>::value,
100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_least32_t>::value");
101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_least64_t
102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_least64_t)*CHAR_BIT >= 64,
103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_least64_t)*CHAR_BIT >= 64");
104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_least64_t>::value,
105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_least64_t>::value");
106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_fast8_t
108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_fast8_t)*CHAR_BIT >= 8,
109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_fast8_t)*CHAR_BIT >= 8");
110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_fast8_t>::value,
111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_fast8_t>::value");
112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_fast16_t
113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_fast16_t)*CHAR_BIT >= 16,
114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_fast16_t)*CHAR_BIT >= 16");
115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_fast16_t>::value,
116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_fast16_t>::value");
117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_fast32_t
118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_fast32_t)*CHAR_BIT >= 32,
119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_fast32_t)*CHAR_BIT >= 32");
120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_fast32_t>::value,
121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_fast32_t>::value");
122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef int_fast64_t
123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(int_fast64_t)*CHAR_BIT >= 64,
124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(int_fast64_t)*CHAR_BIT >= 64");
125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<int_fast64_t>::value,
126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<int_fast64_t>::value");
127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_fast8_t
129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_fast8_t)*CHAR_BIT >= 8,
130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_fast8_t)*CHAR_BIT >= 8");
131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_fast8_t>::value,
132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_fast8_t>::value");
133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_fast16_t
134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_fast16_t)*CHAR_BIT >= 16,
135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_fast16_t)*CHAR_BIT >= 16");
136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_fast16_t>::value,
137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_fast16_t>::value");
138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_fast32_t
139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_fast32_t)*CHAR_BIT >= 32,
140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_fast32_t)*CHAR_BIT >= 32");
141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_fast32_t>::value,
142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_fast32_t>::value");
143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uint_fast64_t
144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uint_fast64_t)*CHAR_BIT >= 64,
145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uint_fast64_t)*CHAR_BIT >= 64");
146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uint_fast64_t>::value,
147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uint_fast64_t>::value");
148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef intptr_t
150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(intptr_t) >= sizeof(void*),
151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(intptr_t) >= sizeof(void*)");
152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<intptr_t>::value,
153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<intptr_t>::value");
154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uintptr_t
155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uintptr_t) >= sizeof(void*),
156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uintptr_t) >= sizeof(void*)");
157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uintptr_t>::value,
158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uintptr_t>::value");
159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef intmax_t
161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(intmax_t) >= sizeof(long long),
162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(intmax_t) >= sizeof(long long)");
163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_signed<intmax_t>::value,
164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_signed<intmax_t>::value");
165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // typedef uintmax_t
166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(sizeof(uintmax_t) >= sizeof(unsigned long long),
167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "sizeof(uintmax_t) >= sizeof(unsigned long long)");
168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(std::is_unsigned<uintmax_t>::value,
169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant                 "std::is_unsigned<uintmax_t>::value");
170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTN_MIN
172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT8_MIN == -128, "INT8_MIN == -128");
173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT16_MIN == -32768, "INT16_MIN == -32768");
174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT32_MIN == -2147483648U, "INT32_MIN == -2147483648");
175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT64_MIN == -9223372036854775808ULL, "INT64_MIN == -9223372036854775808LL");
176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTN_MAX
178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT8_MAX == 127, "INT8_MAX == 127");
179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT16_MAX == 32767, "INT16_MAX == 32767");
180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT32_MAX == 2147483647, "INT32_MAX == 2147483647");
181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT64_MAX == 9223372036854775807LL, "INT64_MAX == 9223372036854775807LL");
182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTN_MAX
184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT8_MAX == 255, "UINT8_MAX == 255");
185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT16_MAX == 65535, "UINT16_MAX == 65535");
186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT32_MAX == 4294967295U, "UINT32_MAX == 4294967295");
187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT64_MAX == 18446744073709551615ULL, "UINT64_MAX == 18446744073709551615ULL");
188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INT_FASTN_MIN
190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST8_MIN <= -128, "INT_FAST8_MIN <= -128");
191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST16_MIN <= -32768, "INT_FAST16_MIN <= -32768");
192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST32_MIN <= -2147483648U, "INT_FAST32_MIN <= -2147483648");
193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST64_MIN <= -9223372036854775808ULL, "INT_FAST64_MIN <= -9223372036854775808LL");
194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INT_FASTN_MAX
196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST8_MAX >= 127, "INT_FAST8_MAX >= 127");
197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST16_MAX >= 32767, "INT_FAST16_MAX >= 32767");
198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST32_MAX >= 2147483647, "INT_FAST32_MAX >= 2147483647");
199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(INT_FAST64_MAX >= 9223372036854775807LL, "INT_FAST64_MAX >= 9223372036854775807LL");
200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINT_FASTN_MAX
202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST8_MAX >= 255, "UINT_FAST8_MAX >= 255");
203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST16_MAX >= 65535, "UINT_FAST16_MAX >= 65535");
204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST32_MAX >= 4294967295U, "UINT_FAST32_MAX >= 4294967295");
205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    static_assert(UINT_FAST64_MAX >= 18446744073709551615ULL, "UINT_FAST64_MAX >= 18446744073709551615ULL");
206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTPTR_MIN
208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTPTR_MIN == std::numeric_limits<intptr_t>::min());
209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTPTR_MAX
211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTPTR_MAX == std::numeric_limits<intptr_t>::max());
212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTPTR_MAX
214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(UINTPTR_MAX == std::numeric_limits<uintptr_t>::max());
215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTMAX_MIN
217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTMAX_MIN == std::numeric_limits<intmax_t>::min());
218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // INTMAX_MAX
220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(INTMAX_MAX == std::numeric_limits<intmax_t>::max());
221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // UINTMAX_MAX
223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(UINTMAX_MAX == std::numeric_limits<uintmax_t>::max());
224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // PTRDIFF_MIN
226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(PTRDIFF_MIN == std::numeric_limits<ptrdiff_t>::min());
227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // PTRDIFF_MAX
229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(PTRDIFF_MAX == std::numeric_limits<ptrdiff_t>::max());
230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIG_ATOMIC_MIN
232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIG_ATOMIC_MIN == std::numeric_limits<sig_atomic_t>::min());
233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIG_ATOMIC_MAX
235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIG_ATOMIC_MAX == std::numeric_limits<sig_atomic_t>::max());
236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // SIZE_MAX
238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(SIZE_MAX == std::numeric_limits<size_t>::max());
239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WCHAR_MIN
241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WCHAR_MIN == std::numeric_limits<wchar_t>::min());
242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WCHAR_MAX
244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WCHAR_MAX == std::numeric_limits<wchar_t>::max());
245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WINT_MIN
247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WINT_MIN == std::numeric_limits<wint_t>::min());
248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    // WINT_MAX
250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant    assert(WINT_MAX == std::numeric_limits<wint_t>::max());
251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT8_C
253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT8_C not defined
254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT16_C
257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT16_C not defined
258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT32_C
261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT32_C not defined
262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INT64_C
265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INT64_C not defined
266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT8_C
269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT8_C not defined
270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT16_C
273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT16_C not defined
274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT32_C
277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT32_C not defined
278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINT64_C
281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINT64_C not defined
282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef INTMAX_C
285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error INTMAX_C not defined
286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#ifndef UINTMAX_C
289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#error UINTMAX_C not defined
290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant}
292