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 
10 // test <cinttypes>
11 
12 #include <cinttypes>
13 #include <type_traits>
14 
15 #ifndef INT8_MIN
16 #error INT8_MIN not defined
17 #endif
18 
19 #ifndef INT16_MIN
20 #error INT16_MIN not defined
21 #endif
22 
23 #ifndef INT32_MIN
24 #error INT32_MIN not defined
25 #endif
26 
27 #ifndef INT64_MIN
28 #error INT64_MIN not defined
29 #endif
30 
31 #ifndef INT8_MAX
32 #error INT8_MAX not defined
33 #endif
34 
35 #ifndef INT16_MAX
36 #error INT16_MAX not defined
37 #endif
38 
39 #ifndef INT32_MAX
40 #error INT32_MAX not defined
41 #endif
42 
43 #ifndef INT64_MAX
44 #error INT64_MAX not defined
45 #endif
46 
47 #ifndef UINT8_MAX
48 #error UINT8_MAX not defined
49 #endif
50 
51 #ifndef UINT16_MAX
52 #error UINT16_MAX not defined
53 #endif
54 
55 #ifndef UINT32_MAX
56 #error UINT32_MAX not defined
57 #endif
58 
59 #ifndef UINT64_MAX
60 #error UINT64_MAX not defined
61 #endif
62 
63 #ifndef INT_LEAST8_MIN
64 #error INT_LEAST8_MIN not defined
65 #endif
66 
67 #ifndef INT_LEAST16_MIN
68 #error INT_LEAST16_MIN not defined
69 #endif
70 
71 #ifndef INT_LEAST32_MIN
72 #error INT_LEAST32_MIN not defined
73 #endif
74 
75 #ifndef INT_LEAST64_MIN
76 #error INT_LEAST64_MIN not defined
77 #endif
78 
79 #ifndef INT_LEAST8_MAX
80 #error INT_LEAST8_MAX not defined
81 #endif
82 
83 #ifndef INT_LEAST16_MAX
84 #error INT_LEAST16_MAX not defined
85 #endif
86 
87 #ifndef INT_LEAST32_MAX
88 #error INT_LEAST32_MAX not defined
89 #endif
90 
91 #ifndef INT_LEAST64_MAX
92 #error INT_LEAST64_MAX not defined
93 #endif
94 
95 #ifndef UINT_LEAST8_MAX
96 #error UINT_LEAST8_MAX not defined
97 #endif
98 
99 #ifndef UINT_LEAST16_MAX
100 #error UINT_LEAST16_MAX not defined
101 #endif
102 
103 #ifndef UINT_LEAST32_MAX
104 #error UINT_LEAST32_MAX not defined
105 #endif
106 
107 #ifndef UINT_LEAST64_MAX
108 #error UINT_LEAST64_MAX not defined
109 #endif
110 
111 #ifndef INT_FAST8_MIN
112 #error INT_FAST8_MIN not defined
113 #endif
114 
115 #ifndef INT_FAST16_MIN
116 #error INT_FAST16_MIN not defined
117 #endif
118 
119 #ifndef INT_FAST32_MIN
120 #error INT_FAST32_MIN not defined
121 #endif
122 
123 #ifndef INT_FAST64_MIN
124 #error INT_FAST64_MIN not defined
125 #endif
126 
127 #ifndef INT_FAST8_MAX
128 #error INT_FAST8_MAX not defined
129 #endif
130 
131 #ifndef INT_FAST16_MAX
132 #error INT_FAST16_MAX not defined
133 #endif
134 
135 #ifndef INT_FAST32_MAX
136 #error INT_FAST32_MAX not defined
137 #endif
138 
139 #ifndef INT_FAST64_MAX
140 #error INT_FAST64_MAX not defined
141 #endif
142 
143 #ifndef UINT_FAST8_MAX
144 #error UINT_FAST8_MAX not defined
145 #endif
146 
147 #ifndef UINT_FAST16_MAX
148 #error UINT_FAST16_MAX not defined
149 #endif
150 
151 #ifndef UINT_FAST32_MAX
152 #error UINT_FAST32_MAX not defined
153 #endif
154 
155 #ifndef UINT_FAST64_MAX
156 #error UINT_FAST64_MAX not defined
157 #endif
158 
159 #ifndef INTPTR_MIN
160 #error INTPTR_MIN not defined
161 #endif
162 
163 #ifndef INTPTR_MAX
164 #error INTPTR_MAX not defined
165 #endif
166 
167 #ifndef UINTPTR_MAX
168 #error UINTPTR_MAX not defined
169 #endif
170 
171 #ifndef INTMAX_MIN
172 #error INTMAX_MIN not defined
173 #endif
174 
175 #ifndef INTMAX_MAX
176 #error INTMAX_MAX not defined
177 #endif
178 
179 #ifndef UINTMAX_MAX
180 #error UINTMAX_MAX not defined
181 #endif
182 
183 #ifndef PTRDIFF_MIN
184 #error PTRDIFF_MIN not defined
185 #endif
186 
187 #ifndef PTRDIFF_MAX
188 #error PTRDIFF_MAX not defined
189 #endif
190 
191 #ifndef SIG_ATOMIC_MIN
192 #error SIG_ATOMIC_MIN not defined
193 #endif
194 
195 #ifndef SIG_ATOMIC_MAX
196 #error SIG_ATOMIC_MAX not defined
197 #endif
198 
199 #ifndef SIZE_MAX
200 #error SIZE_MAX not defined
201 #endif
202 
203 #ifndef WCHAR_MIN
204 #error WCHAR_MIN not defined
205 #endif
206 
207 #ifndef WCHAR_MAX
208 #error WCHAR_MAX not defined
209 #endif
210 
211 #ifndef WINT_MIN
212 #error WINT_MIN not defined
213 #endif
214 
215 #ifndef WINT_MAX
216 #error WINT_MAX not defined
217 #endif
218 
219 #ifndef INT8_C
220 #error INT8_C not defined
221 #endif
222 
223 #ifndef INT16_C
224 #error INT16_C not defined
225 #endif
226 
227 #ifndef INT32_C
228 #error INT32_C not defined
229 #endif
230 
231 #ifndef INT64_C
232 #error INT64_C not defined
233 #endif
234 
235 #ifndef UINT8_C
236 #error UINT8_C not defined
237 #endif
238 
239 #ifndef UINT16_C
240 #error UINT16_C not defined
241 #endif
242 
243 #ifndef UINT32_C
244 #error UINT32_C not defined
245 #endif
246 
247 #ifndef UINT64_C
248 #error UINT64_C not defined
249 #endif
250 
251 #ifndef INTMAX_C
252 #error INTMAX_C not defined
253 #endif
254 
255 #ifndef UINTMAX_C
256 #error UINTMAX_C not defined
257 #endif
258 
259 #ifndef PRId8
260 #error PRId8 not defined
261 #endif
262 
263 #ifndef PRId16
264 #error PRId16 not defined
265 #endif
266 
267 #ifndef PRId32
268 #error PRId32 not defined
269 #endif
270 
271 #ifndef PRId64
272 #error PRId64 not defined
273 #endif
274 
275 #ifndef PRIdLEAST8
276 #error PRIdLEAST8 not defined
277 #endif
278 
279 #ifndef PRIdLEAST16
280 #error PRIdLEAST16 not defined
281 #endif
282 
283 #ifndef PRIdLEAST32
284 #error PRIdLEAST32 not defined
285 #endif
286 
287 #ifndef PRIdLEAST64
288 #error PRIdLEAST64 not defined
289 #endif
290 
291 #ifndef PRIdFAST8
292 #error PRIdFAST8 not defined
293 #endif
294 
295 #ifndef PRIdFAST16
296 #error PRIdFAST16 not defined
297 #endif
298 
299 #ifndef PRIdFAST32
300 #error PRIdFAST32 not defined
301 #endif
302 
303 #ifndef PRIdFAST64
304 #error PRIdFAST64 not defined
305 #endif
306 
307 #ifndef PRIdMAX
308 #error PRIdMAX not defined
309 #endif
310 
311 #ifndef PRIdPTR
312 #error PRIdPTR not defined
313 #endif
314 
315 #ifndef PRIi8
316 #error PRIi8 not defined
317 #endif
318 
319 #ifndef PRIi16
320 #error PRIi16 not defined
321 #endif
322 
323 #ifndef PRIi32
324 #error PRIi32 not defined
325 #endif
326 
327 #ifndef PRIi64
328 #error PRIi64 not defined
329 #endif
330 
331 #ifndef PRIiLEAST8
332 #error PRIiLEAST8 not defined
333 #endif
334 
335 #ifndef PRIiLEAST16
336 #error PRIiLEAST16 not defined
337 #endif
338 
339 #ifndef PRIiLEAST32
340 #error PRIiLEAST32 not defined
341 #endif
342 
343 #ifndef PRIiLEAST64
344 #error PRIiLEAST64 not defined
345 #endif
346 
347 #ifndef PRIiFAST8
348 #error PRIiFAST8 not defined
349 #endif
350 
351 #ifndef PRIiFAST16
352 #error PRIiFAST16 not defined
353 #endif
354 
355 #ifndef PRIiFAST32
356 #error PRIiFAST32 not defined
357 #endif
358 
359 #ifndef PRIiFAST64
360 #error PRIiFAST64 not defined
361 #endif
362 
363 #ifndef PRIiMAX
364 #error PRIiMAX not defined
365 #endif
366 
367 #ifndef PRIiPTR
368 #error PRIiPTR not defined
369 #endif
370 
371 #ifndef PRIo8
372 #error PRIo8 not defined
373 #endif
374 
375 #ifndef PRIo16
376 #error PRIo16 not defined
377 #endif
378 
379 #ifndef PRIo32
380 #error PRIo32 not defined
381 #endif
382 
383 #ifndef PRIo64
384 #error PRIo64 not defined
385 #endif
386 
387 #ifndef PRIoLEAST8
388 #error PRIoLEAST8 not defined
389 #endif
390 
391 #ifndef PRIoLEAST16
392 #error PRIoLEAST16 not defined
393 #endif
394 
395 #ifndef PRIoLEAST32
396 #error PRIoLEAST32 not defined
397 #endif
398 
399 #ifndef PRIoLEAST64
400 #error PRIoLEAST64 not defined
401 #endif
402 
403 #ifndef PRIoFAST8
404 #error PRIoFAST8 not defined
405 #endif
406 
407 #ifndef PRIoFAST16
408 #error PRIoFAST16 not defined
409 #endif
410 
411 #ifndef PRIoFAST32
412 #error PRIoFAST32 not defined
413 #endif
414 
415 #ifndef PRIoFAST64
416 #error PRIoFAST64 not defined
417 #endif
418 
419 #ifndef PRIoMAX
420 #error PRIoMAX not defined
421 #endif
422 
423 #ifndef PRIoPTR
424 #error PRIoPTR not defined
425 #endif
426 
427 #ifndef PRIu8
428 #error PRIu8 not defined
429 #endif
430 
431 #ifndef PRIu16
432 #error PRIu16 not defined
433 #endif
434 
435 #ifndef PRIu32
436 #error PRIu32 not defined
437 #endif
438 
439 #ifndef PRIu64
440 #error PRIu64 not defined
441 #endif
442 
443 #ifndef PRIuLEAST8
444 #error PRIuLEAST8 not defined
445 #endif
446 
447 #ifndef PRIuLEAST16
448 #error PRIuLEAST16 not defined
449 #endif
450 
451 #ifndef PRIuLEAST32
452 #error PRIuLEAST32 not defined
453 #endif
454 
455 #ifndef PRIuLEAST64
456 #error PRIuLEAST64 not defined
457 #endif
458 
459 #ifndef PRIuFAST8
460 #error PRIuFAST8 not defined
461 #endif
462 
463 #ifndef PRIuFAST16
464 #error PRIuFAST16 not defined
465 #endif
466 
467 #ifndef PRIuFAST32
468 #error PRIuFAST32 not defined
469 #endif
470 
471 #ifndef PRIuFAST64
472 #error PRIuFAST64 not defined
473 #endif
474 
475 #ifndef PRIuMAX
476 #error PRIuMAX not defined
477 #endif
478 
479 #ifndef PRIuPTR
480 #error PRIuPTR not defined
481 #endif
482 
483 #ifndef PRIx8
484 #error PRIx8 not defined
485 #endif
486 
487 #ifndef PRIx16
488 #error PRIx16 not defined
489 #endif
490 
491 #ifndef PRIx32
492 #error PRIx32 not defined
493 #endif
494 
495 #ifndef PRIx64
496 #error PRIx64 not defined
497 #endif
498 
499 #ifndef PRIxLEAST8
500 #error PRIxLEAST8 not defined
501 #endif
502 
503 #ifndef PRIxLEAST16
504 #error PRIxLEAST16 not defined
505 #endif
506 
507 #ifndef PRIxLEAST32
508 #error PRIxLEAST32 not defined
509 #endif
510 
511 #ifndef PRIxLEAST64
512 #error PRIxLEAST64 not defined
513 #endif
514 
515 #ifndef PRIxFAST8
516 #error PRIxFAST8 not defined
517 #endif
518 
519 #ifndef PRIxFAST16
520 #error PRIxFAST16 not defined
521 #endif
522 
523 #ifndef PRIxFAST32
524 #error PRIxFAST32 not defined
525 #endif
526 
527 #ifndef PRIxFAST64
528 #error PRIxFAST64 not defined
529 #endif
530 
531 #ifndef PRIxMAX
532 #error PRIxMAX not defined
533 #endif
534 
535 #ifndef PRIxPTR
536 #error PRIxPTR not defined
537 #endif
538 
539 #ifndef PRIX8
540 #error PRIX8 not defined
541 #endif
542 
543 #ifndef PRIX16
544 #error PRIX16 not defined
545 #endif
546 
547 #ifndef PRIX32
548 #error PRIX32 not defined
549 #endif
550 
551 #ifndef PRIX64
552 #error PRIX64 not defined
553 #endif
554 
555 #ifndef PRIXLEAST8
556 #error PRIXLEAST8 not defined
557 #endif
558 
559 #ifndef PRIXLEAST16
560 #error PRIXLEAST16 not defined
561 #endif
562 
563 #ifndef PRIXLEAST32
564 #error PRIXLEAST32 not defined
565 #endif
566 
567 #ifndef PRIXLEAST64
568 #error PRIXLEAST64 not defined
569 #endif
570 
571 #ifndef PRIXFAST8
572 #error PRIXFAST8 not defined
573 #endif
574 
575 #ifndef PRIXFAST16
576 #error PRIXFAST16 not defined
577 #endif
578 
579 #ifndef PRIXFAST32
580 #error PRIXFAST32 not defined
581 #endif
582 
583 #ifndef PRIXFAST64
584 #error PRIXFAST64 not defined
585 #endif
586 
587 #ifndef PRIXMAX
588 #error PRIXMAX not defined
589 #endif
590 
591 #ifndef PRIXPTR
592 #error PRIXPTR not defined
593 #endif
594 
595 #ifndef SCNd8
596 #error SCNd8 not defined
597 #endif
598 
599 #ifndef SCNd16
600 #error SCNd16 not defined
601 #endif
602 
603 #ifndef SCNd32
604 #error SCNd32 not defined
605 #endif
606 
607 #ifndef SCNd64
608 #error SCNd64 not defined
609 #endif
610 
611 #ifndef SCNdLEAST8
612 #error SCNdLEAST8 not defined
613 #endif
614 
615 #ifndef SCNdLEAST16
616 #error SCNdLEAST16 not defined
617 #endif
618 
619 #ifndef SCNdLEAST32
620 #error SCNdLEAST32 not defined
621 #endif
622 
623 #ifndef SCNdLEAST64
624 #error SCNdLEAST64 not defined
625 #endif
626 
627 #ifndef SCNdFAST8
628 #error SCNdFAST8 not defined
629 #endif
630 
631 #ifndef SCNdFAST16
632 #error SCNdFAST16 not defined
633 #endif
634 
635 #ifndef SCNdFAST32
636 #error SCNdFAST32 not defined
637 #endif
638 
639 #ifndef SCNdFAST64
640 #error SCNdFAST64 not defined
641 #endif
642 
643 #ifndef SCNdMAX
644 #error SCNdMAX not defined
645 #endif
646 
647 #ifndef SCNdPTR
648 #error SCNdPTR not defined
649 #endif
650 
651 #ifndef SCNi8
652 #error SCNi8 not defined
653 #endif
654 
655 #ifndef SCNi16
656 #error SCNi16 not defined
657 #endif
658 
659 #ifndef SCNi32
660 #error SCNi32 not defined
661 #endif
662 
663 #ifndef SCNi64
664 #error SCNi64 not defined
665 #endif
666 
667 #ifndef SCNiLEAST8
668 #error SCNiLEAST8 not defined
669 #endif
670 
671 #ifndef SCNiLEAST16
672 #error SCNiLEAST16 not defined
673 #endif
674 
675 #ifndef SCNiLEAST32
676 #error SCNiLEAST32 not defined
677 #endif
678 
679 #ifndef SCNiLEAST64
680 #error SCNiLEAST64 not defined
681 #endif
682 
683 #ifndef SCNiFAST8
684 #error SCNiFAST8 not defined
685 #endif
686 
687 #ifndef SCNiFAST16
688 #error SCNiFAST16 not defined
689 #endif
690 
691 #ifndef SCNiFAST32
692 #error SCNiFAST32 not defined
693 #endif
694 
695 #ifndef SCNiFAST64
696 #error SCNiFAST64 not defined
697 #endif
698 
699 #ifndef SCNiMAX
700 #error SCNiMAX not defined
701 #endif
702 
703 #ifndef SCNiPTR
704 #error SCNiPTR not defined
705 #endif
706 
707 #ifndef SCNo8
708 #error SCNo8 not defined
709 #endif
710 
711 #ifndef SCNo16
712 #error SCNo16 not defined
713 #endif
714 
715 #ifndef SCNo32
716 #error SCNo32 not defined
717 #endif
718 
719 #ifndef SCNo64
720 #error SCNo64 not defined
721 #endif
722 
723 #ifndef SCNoLEAST8
724 #error SCNoLEAST8 not defined
725 #endif
726 
727 #ifndef SCNoLEAST16
728 #error SCNoLEAST16 not defined
729 #endif
730 
731 #ifndef SCNoLEAST32
732 #error SCNoLEAST32 not defined
733 #endif
734 
735 #ifndef SCNoLEAST64
736 #error SCNoLEAST64 not defined
737 #endif
738 
739 #ifndef SCNoFAST8
740 #error SCNoFAST8 not defined
741 #endif
742 
743 #ifndef SCNoFAST16
744 #error SCNoFAST16 not defined
745 #endif
746 
747 #ifndef SCNoFAST32
748 #error SCNoFAST32 not defined
749 #endif
750 
751 #ifndef SCNoFAST64
752 #error SCNoFAST64 not defined
753 #endif
754 
755 #ifndef SCNoMAX
756 #error SCNoMAX not defined
757 #endif
758 
759 #ifndef SCNoPTR
760 #error SCNoPTR not defined
761 #endif
762 
763 #ifndef SCNu8
764 #error SCNu8 not defined
765 #endif
766 
767 #ifndef SCNu16
768 #error SCNu16 not defined
769 #endif
770 
771 #ifndef SCNu32
772 #error SCNu32 not defined
773 #endif
774 
775 #ifndef SCNu64
776 #error SCNu64 not defined
777 #endif
778 
779 #ifndef SCNuLEAST8
780 #error SCNuLEAST8 not defined
781 #endif
782 
783 #ifndef SCNuLEAST16
784 #error SCNuLEAST16 not defined
785 #endif
786 
787 #ifndef SCNuLEAST32
788 #error SCNuLEAST32 not defined
789 #endif
790 
791 #ifndef SCNuLEAST64
792 #error SCNuLEAST64 not defined
793 #endif
794 
795 #ifndef SCNuFAST8
796 #error SCNuFAST8 not defined
797 #endif
798 
799 #ifndef SCNuFAST16
800 #error SCNuFAST16 not defined
801 #endif
802 
803 #ifndef SCNuFAST32
804 #error SCNuFAST32 not defined
805 #endif
806 
807 #ifndef SCNuFAST64
808 #error SCNuFAST64 not defined
809 #endif
810 
811 #ifndef SCNuMAX
812 #error SCNuMAX not defined
813 #endif
814 
815 #ifndef SCNuPTR
816 #error SCNuPTR not defined
817 #endif
818 
819 #ifndef SCNx8
820 #error SCNx8 not defined
821 #endif
822 
823 #ifndef SCNx16
824 #error SCNx16 not defined
825 #endif
826 
827 #ifndef SCNx32
828 #error SCNx32 not defined
829 #endif
830 
831 #ifndef SCNx64
832 #error SCNx64 not defined
833 #endif
834 
835 #ifndef SCNxLEAST8
836 #error SCNxLEAST8 not defined
837 #endif
838 
839 #ifndef SCNxLEAST16
840 #error SCNxLEAST16 not defined
841 #endif
842 
843 #ifndef SCNxLEAST32
844 #error SCNxLEAST32 not defined
845 #endif
846 
847 #ifndef SCNxLEAST64
848 #error SCNxLEAST64 not defined
849 #endif
850 
851 #ifndef SCNxFAST8
852 #error SCNxFAST8 not defined
853 #endif
854 
855 #ifndef SCNxFAST16
856 #error SCNxFAST16 not defined
857 #endif
858 
859 #ifndef SCNxFAST32
860 #error SCNxFAST32 not defined
861 #endif
862 
863 #ifndef SCNxFAST64
864 #error SCNxFAST64 not defined
865 #endif
866 
867 #ifndef SCNxMAX
868 #error SCNxMAX not defined
869 #endif
870 
871 #ifndef SCNxPTR
872 #error SCNxPTR not defined
873 #endif
874 
main()875 int main()
876 {
877     {
878     std::int8_t  i1 = 0;
879     std::int16_t i2 = 0;
880     std::int32_t i3 = 0;
881     std::int64_t i4 = 0;
882     }
883     {
884     std::uint8_t  i1 = 0;
885     std::uint16_t i2 = 0;
886     std::uint32_t i3 = 0;
887     std::uint64_t i4 = 0;
888     }
889     {
890     std::int_least8_t  i1 = 0;
891     std::int_least16_t i2 = 0;
892     std::int_least32_t i3 = 0;
893     std::int_least64_t i4 = 0;
894     }
895     {
896     std::uint_least8_t  i1 = 0;
897     std::uint_least16_t i2 = 0;
898     std::uint_least32_t i3 = 0;
899     std::uint_least64_t i4 = 0;
900     }
901     {
902     std::int_fast8_t  i1 = 0;
903     std::int_fast16_t i2 = 0;
904     std::int_fast32_t i3 = 0;
905     std::int_fast64_t i4 = 0;
906     }
907     {
908     std::uint_fast8_t  i1 = 0;
909     std::uint_fast16_t i2 = 0;
910     std::uint_fast32_t i3 = 0;
911     std::uint_fast64_t i4 = 0;
912     }
913     {
914     std::intptr_t  i1 = 0;
915     std::uintptr_t i2 = 0;
916     std::intmax_t  i3 = 0;
917     std::uintmax_t i4 = 0;
918     }
919     {
920     std::imaxdiv_t  i1 = {0};
921     }
922     std::intmax_t i = 0;
923     static_assert((std::is_same<decltype(std::imaxabs(i)), std::intmax_t>::value), "");
924     static_assert((std::is_same<decltype(std::imaxdiv(i, i)), std::imaxdiv_t>::value), "");
925     static_assert((std::is_same<decltype(std::strtoimax("", (char**)0, 0)), std::intmax_t>::value), "");
926     static_assert((std::is_same<decltype(std::strtoumax("", (char**)0, 0)), std::uintmax_t>::value), "");
927     static_assert((std::is_same<decltype(std::wcstoimax(L"", (wchar_t**)0, 0)), std::intmax_t>::value), "");
928     static_assert((std::is_same<decltype(std::wcstoumax(L"", (wchar_t**)0, 0)), std::uintmax_t>::value), "");
929 }
930