xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/ginclude/stdint-gcc.h (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
1*8feb0f0bSmrg /* Copyright (C) 2008-2020 Free Software Foundation, Inc.
236ac495dSmrg 
336ac495dSmrg This file is part of GCC.
436ac495dSmrg 
536ac495dSmrg GCC is free software; you can redistribute it and/or modify
636ac495dSmrg it under the terms of the GNU General Public License as published by
736ac495dSmrg the Free Software Foundation; either version 3, or (at your option)
836ac495dSmrg any later version.
936ac495dSmrg 
1036ac495dSmrg GCC is distributed in the hope that it will be useful,
1136ac495dSmrg but WITHOUT ANY WARRANTY; without even the implied warranty of
1236ac495dSmrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1336ac495dSmrg GNU General Public License for more details.
1436ac495dSmrg 
1536ac495dSmrg Under Section 7 of GPL version 3, you are granted additional
1636ac495dSmrg permissions described in the GCC Runtime Library Exception, version
1736ac495dSmrg 3.1, as published by the Free Software Foundation.
1836ac495dSmrg 
1936ac495dSmrg You should have received a copy of the GNU General Public License and
2036ac495dSmrg a copy of the GCC Runtime Library Exception along with this program;
2136ac495dSmrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
2236ac495dSmrg <http://www.gnu.org/licenses/>.  */
2336ac495dSmrg 
2436ac495dSmrg /*
2536ac495dSmrg  * ISO C Standard:  7.18  Integer types  <stdint.h>
2636ac495dSmrg  */
2736ac495dSmrg 
2836ac495dSmrg #ifndef _GCC_STDINT_H
2936ac495dSmrg #define _GCC_STDINT_H
3036ac495dSmrg 
3136ac495dSmrg /* 7.8.1.1 Exact-width integer types */
3236ac495dSmrg 
3336ac495dSmrg #ifdef __INT8_TYPE__
3436ac495dSmrg typedef __INT8_TYPE__ int8_t;
3536ac495dSmrg #endif
3636ac495dSmrg #ifdef __INT16_TYPE__
3736ac495dSmrg typedef __INT16_TYPE__ int16_t;
3836ac495dSmrg #endif
3936ac495dSmrg #ifdef __INT32_TYPE__
4036ac495dSmrg typedef __INT32_TYPE__ int32_t;
4136ac495dSmrg #endif
4236ac495dSmrg #ifdef __INT64_TYPE__
4336ac495dSmrg typedef __INT64_TYPE__ int64_t;
4436ac495dSmrg #endif
4536ac495dSmrg #ifdef __UINT8_TYPE__
4636ac495dSmrg typedef __UINT8_TYPE__ uint8_t;
4736ac495dSmrg #endif
4836ac495dSmrg #ifdef __UINT16_TYPE__
4936ac495dSmrg typedef __UINT16_TYPE__ uint16_t;
5036ac495dSmrg #endif
5136ac495dSmrg #ifdef __UINT32_TYPE__
5236ac495dSmrg typedef __UINT32_TYPE__ uint32_t;
5336ac495dSmrg #endif
5436ac495dSmrg #ifdef __UINT64_TYPE__
5536ac495dSmrg typedef __UINT64_TYPE__ uint64_t;
5636ac495dSmrg #endif
5736ac495dSmrg 
5836ac495dSmrg /* 7.8.1.2 Minimum-width integer types */
5936ac495dSmrg 
6036ac495dSmrg typedef __INT_LEAST8_TYPE__ int_least8_t;
6136ac495dSmrg typedef __INT_LEAST16_TYPE__ int_least16_t;
6236ac495dSmrg typedef __INT_LEAST32_TYPE__ int_least32_t;
6336ac495dSmrg typedef __INT_LEAST64_TYPE__ int_least64_t;
6436ac495dSmrg typedef __UINT_LEAST8_TYPE__ uint_least8_t;
6536ac495dSmrg typedef __UINT_LEAST16_TYPE__ uint_least16_t;
6636ac495dSmrg typedef __UINT_LEAST32_TYPE__ uint_least32_t;
6736ac495dSmrg typedef __UINT_LEAST64_TYPE__ uint_least64_t;
6836ac495dSmrg 
6936ac495dSmrg /* 7.8.1.3 Fastest minimum-width integer types */
7036ac495dSmrg 
7136ac495dSmrg typedef __INT_FAST8_TYPE__ int_fast8_t;
7236ac495dSmrg typedef __INT_FAST16_TYPE__ int_fast16_t;
7336ac495dSmrg typedef __INT_FAST32_TYPE__ int_fast32_t;
7436ac495dSmrg typedef __INT_FAST64_TYPE__ int_fast64_t;
7536ac495dSmrg typedef __UINT_FAST8_TYPE__ uint_fast8_t;
7636ac495dSmrg typedef __UINT_FAST16_TYPE__ uint_fast16_t;
7736ac495dSmrg typedef __UINT_FAST32_TYPE__ uint_fast32_t;
7836ac495dSmrg typedef __UINT_FAST64_TYPE__ uint_fast64_t;
7936ac495dSmrg 
8036ac495dSmrg /* 7.8.1.4 Integer types capable of holding object pointers */
8136ac495dSmrg 
8236ac495dSmrg #ifdef __INTPTR_TYPE__
8336ac495dSmrg typedef __INTPTR_TYPE__ intptr_t;
8436ac495dSmrg #endif
8536ac495dSmrg #ifdef __UINTPTR_TYPE__
8636ac495dSmrg typedef __UINTPTR_TYPE__ uintptr_t;
8736ac495dSmrg #endif
8836ac495dSmrg 
8936ac495dSmrg /* 7.8.1.5 Greatest-width integer types */
9036ac495dSmrg 
9136ac495dSmrg typedef __INTMAX_TYPE__ intmax_t;
9236ac495dSmrg typedef __UINTMAX_TYPE__ uintmax_t;
9336ac495dSmrg 
9436ac495dSmrg #if (!defined __cplusplus || __cplusplus >= 201103L \
9536ac495dSmrg      || defined __STDC_LIMIT_MACROS)
9636ac495dSmrg 
9736ac495dSmrg /* 7.18.2 Limits of specified-width integer types */
9836ac495dSmrg 
9936ac495dSmrg #ifdef __INT8_MAX__
10036ac495dSmrg # undef INT8_MAX
10136ac495dSmrg # define INT8_MAX __INT8_MAX__
10236ac495dSmrg # undef INT8_MIN
10336ac495dSmrg # define INT8_MIN (-INT8_MAX - 1)
10436ac495dSmrg #endif
10536ac495dSmrg #ifdef __UINT8_MAX__
10636ac495dSmrg # undef UINT8_MAX
10736ac495dSmrg # define UINT8_MAX __UINT8_MAX__
10836ac495dSmrg #endif
10936ac495dSmrg #ifdef __INT16_MAX__
11036ac495dSmrg # undef INT16_MAX
11136ac495dSmrg # define INT16_MAX __INT16_MAX__
11236ac495dSmrg # undef INT16_MIN
11336ac495dSmrg # define INT16_MIN (-INT16_MAX - 1)
11436ac495dSmrg #endif
11536ac495dSmrg #ifdef __UINT16_MAX__
11636ac495dSmrg # undef UINT16_MAX
11736ac495dSmrg # define UINT16_MAX __UINT16_MAX__
11836ac495dSmrg #endif
11936ac495dSmrg #ifdef __INT32_MAX__
12036ac495dSmrg # undef INT32_MAX
12136ac495dSmrg # define INT32_MAX __INT32_MAX__
12236ac495dSmrg # undef INT32_MIN
12336ac495dSmrg # define INT32_MIN (-INT32_MAX - 1)
12436ac495dSmrg #endif
12536ac495dSmrg #ifdef __UINT32_MAX__
12636ac495dSmrg # undef UINT32_MAX
12736ac495dSmrg # define UINT32_MAX __UINT32_MAX__
12836ac495dSmrg #endif
12936ac495dSmrg #ifdef __INT64_MAX__
13036ac495dSmrg # undef INT64_MAX
13136ac495dSmrg # define INT64_MAX __INT64_MAX__
13236ac495dSmrg # undef INT64_MIN
13336ac495dSmrg # define INT64_MIN (-INT64_MAX - 1)
13436ac495dSmrg #endif
13536ac495dSmrg #ifdef __UINT64_MAX__
13636ac495dSmrg # undef UINT64_MAX
13736ac495dSmrg # define UINT64_MAX __UINT64_MAX__
13836ac495dSmrg #endif
13936ac495dSmrg 
14036ac495dSmrg #undef INT_LEAST8_MAX
14136ac495dSmrg #define INT_LEAST8_MAX __INT_LEAST8_MAX__
14236ac495dSmrg #undef INT_LEAST8_MIN
14336ac495dSmrg #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1)
14436ac495dSmrg #undef UINT_LEAST8_MAX
14536ac495dSmrg #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__
14636ac495dSmrg #undef INT_LEAST16_MAX
14736ac495dSmrg #define INT_LEAST16_MAX __INT_LEAST16_MAX__
14836ac495dSmrg #undef INT_LEAST16_MIN
14936ac495dSmrg #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1)
15036ac495dSmrg #undef UINT_LEAST16_MAX
15136ac495dSmrg #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__
15236ac495dSmrg #undef INT_LEAST32_MAX
15336ac495dSmrg #define INT_LEAST32_MAX __INT_LEAST32_MAX__
15436ac495dSmrg #undef INT_LEAST32_MIN
15536ac495dSmrg #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1)
15636ac495dSmrg #undef UINT_LEAST32_MAX
15736ac495dSmrg #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__
15836ac495dSmrg #undef INT_LEAST64_MAX
15936ac495dSmrg #define INT_LEAST64_MAX __INT_LEAST64_MAX__
16036ac495dSmrg #undef INT_LEAST64_MIN
16136ac495dSmrg #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1)
16236ac495dSmrg #undef UINT_LEAST64_MAX
16336ac495dSmrg #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__
16436ac495dSmrg 
16536ac495dSmrg #undef INT_FAST8_MAX
16636ac495dSmrg #define INT_FAST8_MAX __INT_FAST8_MAX__
16736ac495dSmrg #undef INT_FAST8_MIN
16836ac495dSmrg #define INT_FAST8_MIN (-INT_FAST8_MAX - 1)
16936ac495dSmrg #undef UINT_FAST8_MAX
17036ac495dSmrg #define UINT_FAST8_MAX __UINT_FAST8_MAX__
17136ac495dSmrg #undef INT_FAST16_MAX
17236ac495dSmrg #define INT_FAST16_MAX __INT_FAST16_MAX__
17336ac495dSmrg #undef INT_FAST16_MIN
17436ac495dSmrg #define INT_FAST16_MIN (-INT_FAST16_MAX - 1)
17536ac495dSmrg #undef UINT_FAST16_MAX
17636ac495dSmrg #define UINT_FAST16_MAX __UINT_FAST16_MAX__
17736ac495dSmrg #undef INT_FAST32_MAX
17836ac495dSmrg #define INT_FAST32_MAX __INT_FAST32_MAX__
17936ac495dSmrg #undef INT_FAST32_MIN
18036ac495dSmrg #define INT_FAST32_MIN (-INT_FAST32_MAX - 1)
18136ac495dSmrg #undef UINT_FAST32_MAX
18236ac495dSmrg #define UINT_FAST32_MAX __UINT_FAST32_MAX__
18336ac495dSmrg #undef INT_FAST64_MAX
18436ac495dSmrg #define INT_FAST64_MAX __INT_FAST64_MAX__
18536ac495dSmrg #undef INT_FAST64_MIN
18636ac495dSmrg #define INT_FAST64_MIN (-INT_FAST64_MAX - 1)
18736ac495dSmrg #undef UINT_FAST64_MAX
18836ac495dSmrg #define UINT_FAST64_MAX __UINT_FAST64_MAX__
18936ac495dSmrg 
19036ac495dSmrg #ifdef __INTPTR_MAX__
19136ac495dSmrg # undef INTPTR_MAX
19236ac495dSmrg # define INTPTR_MAX __INTPTR_MAX__
19336ac495dSmrg # undef INTPTR_MIN
19436ac495dSmrg # define INTPTR_MIN (-INTPTR_MAX - 1)
19536ac495dSmrg #endif
19636ac495dSmrg #ifdef __UINTPTR_MAX__
19736ac495dSmrg # undef UINTPTR_MAX
19836ac495dSmrg # define UINTPTR_MAX __UINTPTR_MAX__
19936ac495dSmrg #endif
20036ac495dSmrg 
20136ac495dSmrg #undef INTMAX_MAX
20236ac495dSmrg #define INTMAX_MAX __INTMAX_MAX__
20336ac495dSmrg #undef INTMAX_MIN
20436ac495dSmrg #define INTMAX_MIN (-INTMAX_MAX - 1)
20536ac495dSmrg #undef UINTMAX_MAX
20636ac495dSmrg #define UINTMAX_MAX __UINTMAX_MAX__
20736ac495dSmrg 
20836ac495dSmrg /* 7.18.3 Limits of other integer types */
20936ac495dSmrg 
21036ac495dSmrg #undef PTRDIFF_MAX
21136ac495dSmrg #define PTRDIFF_MAX __PTRDIFF_MAX__
21236ac495dSmrg #undef PTRDIFF_MIN
21336ac495dSmrg #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
21436ac495dSmrg 
21536ac495dSmrg #undef SIG_ATOMIC_MAX
21636ac495dSmrg #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__
21736ac495dSmrg #undef SIG_ATOMIC_MIN
21836ac495dSmrg #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__
21936ac495dSmrg 
22036ac495dSmrg #undef SIZE_MAX
22136ac495dSmrg #define SIZE_MAX __SIZE_MAX__
22236ac495dSmrg 
22336ac495dSmrg #undef WCHAR_MAX
22436ac495dSmrg #define WCHAR_MAX __WCHAR_MAX__
22536ac495dSmrg #undef WCHAR_MIN
22636ac495dSmrg #define WCHAR_MIN __WCHAR_MIN__
22736ac495dSmrg 
22836ac495dSmrg #undef WINT_MAX
22936ac495dSmrg #define WINT_MAX __WINT_MAX__
23036ac495dSmrg #undef WINT_MIN
23136ac495dSmrg #define WINT_MIN __WINT_MIN__
23236ac495dSmrg 
23336ac495dSmrg #endif /* (!defined __cplusplus || __cplusplus >= 201103L
23436ac495dSmrg 	   || defined __STDC_LIMIT_MACROS)  */
23536ac495dSmrg 
23636ac495dSmrg #if (!defined __cplusplus || __cplusplus >= 201103L \
23736ac495dSmrg      || defined __STDC_CONSTANT_MACROS)
23836ac495dSmrg 
23936ac495dSmrg #undef INT8_C
24036ac495dSmrg #define INT8_C(c) __INT8_C(c)
24136ac495dSmrg #undef INT16_C
24236ac495dSmrg #define INT16_C(c) __INT16_C(c)
24336ac495dSmrg #undef INT32_C
24436ac495dSmrg #define INT32_C(c) __INT32_C(c)
24536ac495dSmrg #undef INT64_C
24636ac495dSmrg #define INT64_C(c) __INT64_C(c)
24736ac495dSmrg #undef UINT8_C
24836ac495dSmrg #define UINT8_C(c) __UINT8_C(c)
24936ac495dSmrg #undef UINT16_C
25036ac495dSmrg #define UINT16_C(c) __UINT16_C(c)
25136ac495dSmrg #undef UINT32_C
25236ac495dSmrg #define UINT32_C(c) __UINT32_C(c)
25336ac495dSmrg #undef UINT64_C
25436ac495dSmrg #define UINT64_C(c) __UINT64_C(c)
25536ac495dSmrg #undef INTMAX_C
25636ac495dSmrg #define INTMAX_C(c) __INTMAX_C(c)
25736ac495dSmrg #undef UINTMAX_C
25836ac495dSmrg #define UINTMAX_C(c) __UINTMAX_C(c)
25936ac495dSmrg 
26036ac495dSmrg #endif /* (!defined __cplusplus || __cplusplus >= 201103L
26136ac495dSmrg 	   || defined __STDC_CONSTANT_MACROS) */
26236ac495dSmrg 
263*8feb0f0bSmrg #if (defined __STDC_WANT_IEC_60559_BFP_EXT__ \
264*8feb0f0bSmrg      || (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L))
265*8feb0f0bSmrg /* TS 18661-1 / C2X widths of integer types.  */
26636ac495dSmrg 
26736ac495dSmrg #ifdef __INT8_TYPE__
26836ac495dSmrg # undef INT8_WIDTH
26936ac495dSmrg # define INT8_WIDTH 8
27036ac495dSmrg #endif
27136ac495dSmrg #ifdef __UINT8_TYPE__
27236ac495dSmrg # undef UINT8_WIDTH
27336ac495dSmrg # define UINT8_WIDTH 8
27436ac495dSmrg #endif
27536ac495dSmrg #ifdef __INT16_TYPE__
27636ac495dSmrg # undef INT16_WIDTH
27736ac495dSmrg # define INT16_WIDTH 16
27836ac495dSmrg #endif
27936ac495dSmrg #ifdef __UINT16_TYPE__
28036ac495dSmrg # undef UINT16_WIDTH
28136ac495dSmrg # define UINT16_WIDTH 16
28236ac495dSmrg #endif
28336ac495dSmrg #ifdef __INT32_TYPE__
28436ac495dSmrg # undef INT32_WIDTH
28536ac495dSmrg # define INT32_WIDTH 32
28636ac495dSmrg #endif
28736ac495dSmrg #ifdef __UINT32_TYPE__
28836ac495dSmrg # undef UINT32_WIDTH
28936ac495dSmrg # define UINT32_WIDTH 32
29036ac495dSmrg #endif
29136ac495dSmrg #ifdef __INT64_TYPE__
29236ac495dSmrg # undef INT64_WIDTH
29336ac495dSmrg # define INT64_WIDTH 64
29436ac495dSmrg #endif
29536ac495dSmrg #ifdef __UINT64_TYPE__
29636ac495dSmrg # undef UINT64_WIDTH
29736ac495dSmrg # define UINT64_WIDTH 64
29836ac495dSmrg #endif
29936ac495dSmrg 
30036ac495dSmrg #undef INT_LEAST8_WIDTH
30136ac495dSmrg #define INT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
30236ac495dSmrg #undef UINT_LEAST8_WIDTH
30336ac495dSmrg #define UINT_LEAST8_WIDTH __INT_LEAST8_WIDTH__
30436ac495dSmrg #undef INT_LEAST16_WIDTH
30536ac495dSmrg #define INT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
30636ac495dSmrg #undef UINT_LEAST16_WIDTH
30736ac495dSmrg #define UINT_LEAST16_WIDTH __INT_LEAST16_WIDTH__
30836ac495dSmrg #undef INT_LEAST32_WIDTH
30936ac495dSmrg #define INT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
31036ac495dSmrg #undef UINT_LEAST32_WIDTH
31136ac495dSmrg #define UINT_LEAST32_WIDTH __INT_LEAST32_WIDTH__
31236ac495dSmrg #undef INT_LEAST64_WIDTH
31336ac495dSmrg #define INT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
31436ac495dSmrg #undef UINT_LEAST64_WIDTH
31536ac495dSmrg #define UINT_LEAST64_WIDTH __INT_LEAST64_WIDTH__
31636ac495dSmrg 
31736ac495dSmrg #undef INT_FAST8_WIDTH
31836ac495dSmrg #define INT_FAST8_WIDTH __INT_FAST8_WIDTH__
31936ac495dSmrg #undef UINT_FAST8_WIDTH
32036ac495dSmrg #define UINT_FAST8_WIDTH __INT_FAST8_WIDTH__
32136ac495dSmrg #undef INT_FAST16_WIDTH
32236ac495dSmrg #define INT_FAST16_WIDTH __INT_FAST16_WIDTH__
32336ac495dSmrg #undef UINT_FAST16_WIDTH
32436ac495dSmrg #define UINT_FAST16_WIDTH __INT_FAST16_WIDTH__
32536ac495dSmrg #undef INT_FAST32_WIDTH
32636ac495dSmrg #define INT_FAST32_WIDTH __INT_FAST32_WIDTH__
32736ac495dSmrg #undef UINT_FAST32_WIDTH
32836ac495dSmrg #define UINT_FAST32_WIDTH __INT_FAST32_WIDTH__
32936ac495dSmrg #undef INT_FAST64_WIDTH
33036ac495dSmrg #define INT_FAST64_WIDTH __INT_FAST64_WIDTH__
33136ac495dSmrg #undef UINT_FAST64_WIDTH
33236ac495dSmrg #define UINT_FAST64_WIDTH __INT_FAST64_WIDTH__
33336ac495dSmrg 
33436ac495dSmrg #ifdef __INTPTR_TYPE__
33536ac495dSmrg # undef INTPTR_WIDTH
33636ac495dSmrg # define INTPTR_WIDTH __INTPTR_WIDTH__
33736ac495dSmrg #endif
33836ac495dSmrg #ifdef __UINTPTR_TYPE__
33936ac495dSmrg # undef UINTPTR_WIDTH
34036ac495dSmrg # define UINTPTR_WIDTH __INTPTR_WIDTH__
34136ac495dSmrg #endif
34236ac495dSmrg 
34336ac495dSmrg #undef INTMAX_WIDTH
34436ac495dSmrg #define INTMAX_WIDTH __INTMAX_WIDTH__
34536ac495dSmrg #undef UINTMAX_WIDTH
34636ac495dSmrg #define UINTMAX_WIDTH __INTMAX_WIDTH__
34736ac495dSmrg 
34836ac495dSmrg #undef PTRDIFF_WIDTH
34936ac495dSmrg #define PTRDIFF_WIDTH __PTRDIFF_WIDTH__
35036ac495dSmrg 
35136ac495dSmrg #undef SIG_ATOMIC_WIDTH
35236ac495dSmrg #define SIG_ATOMIC_WIDTH __SIG_ATOMIC_WIDTH__
35336ac495dSmrg 
35436ac495dSmrg #undef SIZE_WIDTH
35536ac495dSmrg #define SIZE_WIDTH __SIZE_WIDTH__
35636ac495dSmrg 
35736ac495dSmrg #undef WCHAR_WIDTH
35836ac495dSmrg #define WCHAR_WIDTH __WCHAR_WIDTH__
35936ac495dSmrg 
36036ac495dSmrg #undef WINT_WIDTH
36136ac495dSmrg #define WINT_WIDTH __WINT_WIDTH__
36236ac495dSmrg 
36336ac495dSmrg #endif
36436ac495dSmrg 
36536ac495dSmrg #endif /* _GCC_STDINT_H */
366