stdint_h.pass.cpp 11 KB

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