1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
13 #include <type_traits>
16 #error INT8_MIN not defined
20 #error INT16_MIN not defined
24 #error INT32_MIN not defined
28 #error INT64_MIN not defined
32 #error INT8_MAX not defined
36 #error INT16_MAX not defined
40 #error INT32_MAX not defined
44 #error INT64_MAX not defined
48 #error UINT8_MAX not defined
52 #error UINT16_MAX not defined
56 #error UINT32_MAX not defined
60 #error UINT64_MAX not defined
63 #ifndef INT_LEAST8_MIN
64 #error INT_LEAST8_MIN not defined
67 #ifndef INT_LEAST16_MIN
68 #error INT_LEAST16_MIN not defined
71 #ifndef INT_LEAST32_MIN
72 #error INT_LEAST32_MIN not defined
75 #ifndef INT_LEAST64_MIN
76 #error INT_LEAST64_MIN not defined
79 #ifndef INT_LEAST8_MAX
80 #error INT_LEAST8_MAX not defined
83 #ifndef INT_LEAST16_MAX
84 #error INT_LEAST16_MAX not defined
87 #ifndef INT_LEAST32_MAX
88 #error INT_LEAST32_MAX not defined
91 #ifndef INT_LEAST64_MAX
92 #error INT_LEAST64_MAX not defined
95 #ifndef UINT_LEAST8_MAX
96 #error UINT_LEAST8_MAX not defined
99 #ifndef UINT_LEAST16_MAX
100 #error UINT_LEAST16_MAX not defined
103 #ifndef UINT_LEAST32_MAX
104 #error UINT_LEAST32_MAX not defined
107 #ifndef UINT_LEAST64_MAX
108 #error UINT_LEAST64_MAX not defined
111 #ifndef INT_FAST8_MIN
112 #error INT_FAST8_MIN not defined
115 #ifndef INT_FAST16_MIN
116 #error INT_FAST16_MIN not defined
119 #ifndef INT_FAST32_MIN
120 #error INT_FAST32_MIN not defined
123 #ifndef INT_FAST64_MIN
124 #error INT_FAST64_MIN not defined
127 #ifndef INT_FAST8_MAX
128 #error INT_FAST8_MAX not defined
131 #ifndef INT_FAST16_MAX
132 #error INT_FAST16_MAX not defined
135 #ifndef INT_FAST32_MAX
136 #error INT_FAST32_MAX not defined
139 #ifndef INT_FAST64_MAX
140 #error INT_FAST64_MAX not defined
143 #ifndef UINT_FAST8_MAX
144 #error UINT_FAST8_MAX not defined
147 #ifndef UINT_FAST16_MAX
148 #error UINT_FAST16_MAX not defined
151 #ifndef UINT_FAST32_MAX
152 #error UINT_FAST32_MAX not defined
155 #ifndef UINT_FAST64_MAX
156 #error UINT_FAST64_MAX not defined
160 #error INTPTR_MIN not defined
164 #error INTPTR_MAX not defined
168 #error UINTPTR_MAX not defined
172 #error INTMAX_MIN not defined
176 #error INTMAX_MAX not defined
180 #error UINTMAX_MAX not defined
184 #error PTRDIFF_MIN not defined
188 #error PTRDIFF_MAX not defined
191 #ifndef SIG_ATOMIC_MIN
192 #error SIG_ATOMIC_MIN not defined
195 #ifndef SIG_ATOMIC_MAX
196 #error SIG_ATOMIC_MAX not defined
200 #error SIZE_MAX not defined
204 #error WCHAR_MIN not defined
208 #error WCHAR_MAX not defined
212 #error WINT_MIN not defined
216 #error WINT_MAX not defined
220 #error INT8_C not defined
224 #error INT16_C not defined
228 #error INT32_C not defined
232 #error INT64_C not defined
236 #error UINT8_C not defined
240 #error UINT16_C not defined
244 #error UINT32_C not defined
248 #error UINT64_C not defined
252 #error INTMAX_C not defined
256 #error UINTMAX_C not defined
260 #error PRId8 not defined
264 #error PRId16 not defined
268 #error PRId32 not defined
272 #error PRId64 not defined
276 #error PRIdLEAST8 not defined
280 #error PRIdLEAST16 not defined
284 #error PRIdLEAST32 not defined
288 #error PRIdLEAST64 not defined
292 #error PRIdFAST8 not defined
296 #error PRIdFAST16 not defined
300 #error PRIdFAST32 not defined
304 #error PRIdFAST64 not defined
308 #error PRIdMAX not defined
312 #error PRIdPTR not defined
316 #error PRIi8 not defined
320 #error PRIi16 not defined
324 #error PRIi32 not defined
328 #error PRIi64 not defined
332 #error PRIiLEAST8 not defined
336 #error PRIiLEAST16 not defined
340 #error PRIiLEAST32 not defined
344 #error PRIiLEAST64 not defined
348 #error PRIiFAST8 not defined
352 #error PRIiFAST16 not defined
356 #error PRIiFAST32 not defined
360 #error PRIiFAST64 not defined
364 #error PRIiMAX not defined
368 #error PRIiPTR not defined
372 #error PRIo8 not defined
376 #error PRIo16 not defined
380 #error PRIo32 not defined
384 #error PRIo64 not defined
388 #error PRIoLEAST8 not defined
392 #error PRIoLEAST16 not defined
396 #error PRIoLEAST32 not defined
400 #error PRIoLEAST64 not defined
404 #error PRIoFAST8 not defined
408 #error PRIoFAST16 not defined
412 #error PRIoFAST32 not defined
416 #error PRIoFAST64 not defined
420 #error PRIoMAX not defined
424 #error PRIoPTR not defined
428 #error PRIu8 not defined
432 #error PRIu16 not defined
436 #error PRIu32 not defined
440 #error PRIu64 not defined
444 #error PRIuLEAST8 not defined
448 #error PRIuLEAST16 not defined
452 #error PRIuLEAST32 not defined
456 #error PRIuLEAST64 not defined
460 #error PRIuFAST8 not defined
464 #error PRIuFAST16 not defined
468 #error PRIuFAST32 not defined
472 #error PRIuFAST64 not defined
476 #error PRIuMAX not defined
480 #error PRIuPTR not defined
484 #error PRIx8 not defined
488 #error PRIx16 not defined
492 #error PRIx32 not defined
496 #error PRIx64 not defined
500 #error PRIxLEAST8 not defined
504 #error PRIxLEAST16 not defined
508 #error PRIxLEAST32 not defined
512 #error PRIxLEAST64 not defined
516 #error PRIxFAST8 not defined
520 #error PRIxFAST16 not defined
524 #error PRIxFAST32 not defined
528 #error PRIxFAST64 not defined
532 #error PRIxMAX not defined
536 #error PRIxPTR not defined
540 #error PRIX8 not defined
544 #error PRIX16 not defined
548 #error PRIX32 not defined
552 #error PRIX64 not defined
556 #error PRIXLEAST8 not defined
560 #error PRIXLEAST16 not defined
564 #error PRIXLEAST32 not defined
568 #error PRIXLEAST64 not defined
572 #error PRIXFAST8 not defined
576 #error PRIXFAST16 not defined
580 #error PRIXFAST32 not defined
584 #error PRIXFAST64 not defined
588 #error PRIXMAX not defined
592 #error PRIXPTR not defined
596 #error SCNd8 not defined
600 #error SCNd16 not defined
604 #error SCNd32 not defined
608 #error SCNd64 not defined
612 #error SCNdLEAST8 not defined
616 #error SCNdLEAST16 not defined
620 #error SCNdLEAST32 not defined
624 #error SCNdLEAST64 not defined
628 #error SCNdFAST8 not defined
632 #error SCNdFAST16 not defined
636 #error SCNdFAST32 not defined
640 #error SCNdFAST64 not defined
644 #error SCNdMAX not defined
648 #error SCNdPTR not defined
652 #error SCNi8 not defined
656 #error SCNi16 not defined
660 #error SCNi32 not defined
664 #error SCNi64 not defined
668 #error SCNiLEAST8 not defined
672 #error SCNiLEAST16 not defined
676 #error SCNiLEAST32 not defined
680 #error SCNiLEAST64 not defined
684 #error SCNiFAST8 not defined
688 #error SCNiFAST16 not defined
692 #error SCNiFAST32 not defined
696 #error SCNiFAST64 not defined
700 #error SCNiMAX not defined
704 #error SCNiPTR not defined
708 #error SCNo8 not defined
712 #error SCNo16 not defined
716 #error SCNo32 not defined
720 #error SCNo64 not defined
724 #error SCNoLEAST8 not defined
728 #error SCNoLEAST16 not defined
732 #error SCNoLEAST32 not defined
736 #error SCNoLEAST64 not defined
740 #error SCNoFAST8 not defined
744 #error SCNoFAST16 not defined
748 #error SCNoFAST32 not defined
752 #error SCNoFAST64 not defined
756 #error SCNoMAX not defined
760 #error SCNoPTR not defined
764 #error SCNu8 not defined
768 #error SCNu16 not defined
772 #error SCNu32 not defined
776 #error SCNu64 not defined
780 #error SCNuLEAST8 not defined
784 #error SCNuLEAST16 not defined
788 #error SCNuLEAST32 not defined
792 #error SCNuLEAST64 not defined
796 #error SCNuFAST8 not defined
800 #error SCNuFAST16 not defined
804 #error SCNuFAST32 not defined
808 #error SCNuFAST64 not defined
812 #error SCNuMAX not defined
816 #error SCNuPTR not defined
820 #error SCNx8 not defined
824 #error SCNx16 not defined
828 #error SCNx32 not defined
832 #error SCNx64 not defined
836 #error SCNxLEAST8 not defined
840 #error SCNxLEAST16 not defined
844 #error SCNxLEAST32 not defined
848 #error SCNxLEAST64 not defined
852 #error SCNxFAST8 not defined
856 #error SCNxFAST16 not defined
860 #error SCNxFAST32 not defined
864 #error SCNxFAST64 not defined
868 #error SCNxMAX not defined
872 #error SCNxPTR not defined
875 template <class T> void test()
878 ((void)t); // Prevent unused warning
883 test<std::int8_t >();
884 test<std::int16_t>();
885 test<std::int32_t>();
886 test<std::int64_t>();
888 test<std::uint8_t >();
889 test<std::uint16_t>();
890 test<std::uint32_t>();
891 test<std::uint64_t>();
893 test<std::int_least8_t >();
894 test<std::int_least16_t>();
895 test<std::int_least32_t>();
896 test<std::int_least64_t>();
898 test<std::uint_least8_t >();
899 test<std::uint_least16_t>();
900 test<std::uint_least32_t>();
901 test<std::uint_least64_t>();
903 test<std::int_fast8_t >();
904 test<std::int_fast16_t>();
905 test<std::int_fast32_t>();
906 test<std::int_fast64_t>();
908 test<std::uint_fast8_t >();
909 test<std::uint_fast16_t>();
910 test<std::uint_fast32_t>();
911 test<std::uint_fast64_t>();
913 test<std::intptr_t >();
914 test<std::uintptr_t>();
915 test<std::intmax_t >();
916 test<std::uintmax_t>();
919 std::imaxdiv_t i1 = {};
920 ((void)i1); // Prevent unused warning
924 ((void)i); // Prevent unused warning
925 static_assert((std::is_same<decltype(std::imaxabs(i)), std::intmax_t>::value), "");
926 static_assert((std::is_same<decltype(std::imaxdiv(i, i)), std::imaxdiv_t>::value), "");
927 static_assert((std::is_same<decltype(std::strtoimax("", (char**)0, 0)), std::intmax_t>::value), "");
928 static_assert((std::is_same<decltype(std::strtoumax("", (char**)0, 0)), std::uintmax_t>::value), "");
929 static_assert((std::is_same<decltype(std::wcstoimax(L"", (wchar_t**)0, 0)), std::intmax_t>::value), "");
930 static_assert((std::is_same<decltype(std::wcstoumax(L"", (wchar_t**)0, 0)), std::uintmax_t>::value), "");