xref: /dragonfly/contrib/gcc-8.0/gcc/glimits.h (revision 38fd1498)
1*38fd1498Szrj /* Copyright (C) 1991-2018 Free Software Foundation, Inc.
2*38fd1498Szrj 
3*38fd1498Szrj This file is part of GCC.
4*38fd1498Szrj 
5*38fd1498Szrj GCC is free software; you can redistribute it and/or modify it under
6*38fd1498Szrj the terms of the GNU General Public License as published by the Free
7*38fd1498Szrj Software Foundation; either version 3, or (at your option) any later
8*38fd1498Szrj version.
9*38fd1498Szrj 
10*38fd1498Szrj GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11*38fd1498Szrj WARRANTY; without even the implied warranty of MERCHANTABILITY or
12*38fd1498Szrj FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13*38fd1498Szrj for more details.
14*38fd1498Szrj 
15*38fd1498Szrj Under Section 7 of GPL version 3, you are granted additional
16*38fd1498Szrj permissions described in the GCC Runtime Library Exception, version
17*38fd1498Szrj 3.1, as published by the Free Software Foundation.
18*38fd1498Szrj 
19*38fd1498Szrj You should have received a copy of the GNU General Public License and
20*38fd1498Szrj a copy of the GCC Runtime Library Exception along with this program;
21*38fd1498Szrj see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22*38fd1498Szrj <http://www.gnu.org/licenses/>.  */
23*38fd1498Szrj 
24*38fd1498Szrj #ifndef _LIMITS_H___
25*38fd1498Szrj #define _LIMITS_H___
26*38fd1498Szrj 
27*38fd1498Szrj /* Number of bits in a `char'.  */
28*38fd1498Szrj #undef CHAR_BIT
29*38fd1498Szrj #define CHAR_BIT __CHAR_BIT__
30*38fd1498Szrj 
31*38fd1498Szrj /* Maximum length of a multibyte character.  */
32*38fd1498Szrj #ifndef MB_LEN_MAX
33*38fd1498Szrj #define MB_LEN_MAX 1
34*38fd1498Szrj #endif
35*38fd1498Szrj 
36*38fd1498Szrj /* Minimum and maximum values a `signed char' can hold.  */
37*38fd1498Szrj #undef SCHAR_MIN
38*38fd1498Szrj #define SCHAR_MIN (-SCHAR_MAX - 1)
39*38fd1498Szrj #undef SCHAR_MAX
40*38fd1498Szrj #define SCHAR_MAX __SCHAR_MAX__
41*38fd1498Szrj 
42*38fd1498Szrj /* Maximum value an `unsigned char' can hold.  (Minimum is 0).  */
43*38fd1498Szrj #undef UCHAR_MAX
44*38fd1498Szrj #if __SCHAR_MAX__ == __INT_MAX__
45*38fd1498Szrj # define UCHAR_MAX (SCHAR_MAX * 2U + 1U)
46*38fd1498Szrj #else
47*38fd1498Szrj # define UCHAR_MAX (SCHAR_MAX * 2 + 1)
48*38fd1498Szrj #endif
49*38fd1498Szrj 
50*38fd1498Szrj /* Minimum and maximum values a `char' can hold.  */
51*38fd1498Szrj #ifdef __CHAR_UNSIGNED__
52*38fd1498Szrj # undef CHAR_MIN
53*38fd1498Szrj # if __SCHAR_MAX__ == __INT_MAX__
54*38fd1498Szrj #  define CHAR_MIN 0U
55*38fd1498Szrj # else
56*38fd1498Szrj #  define CHAR_MIN 0
57*38fd1498Szrj # endif
58*38fd1498Szrj # undef CHAR_MAX
59*38fd1498Szrj # define CHAR_MAX UCHAR_MAX
60*38fd1498Szrj #else
61*38fd1498Szrj # undef CHAR_MIN
62*38fd1498Szrj # define CHAR_MIN SCHAR_MIN
63*38fd1498Szrj # undef CHAR_MAX
64*38fd1498Szrj # define CHAR_MAX SCHAR_MAX
65*38fd1498Szrj #endif
66*38fd1498Szrj 
67*38fd1498Szrj /* Minimum and maximum values a `signed short int' can hold.  */
68*38fd1498Szrj #undef SHRT_MIN
69*38fd1498Szrj #define SHRT_MIN (-SHRT_MAX - 1)
70*38fd1498Szrj #undef SHRT_MAX
71*38fd1498Szrj #define SHRT_MAX __SHRT_MAX__
72*38fd1498Szrj 
73*38fd1498Szrj /* Maximum value an `unsigned short int' can hold.  (Minimum is 0).  */
74*38fd1498Szrj #undef USHRT_MAX
75*38fd1498Szrj #if __SHRT_MAX__ == __INT_MAX__
76*38fd1498Szrj # define USHRT_MAX (SHRT_MAX * 2U + 1U)
77*38fd1498Szrj #else
78*38fd1498Szrj # define USHRT_MAX (SHRT_MAX * 2 + 1)
79*38fd1498Szrj #endif
80*38fd1498Szrj 
81*38fd1498Szrj /* Minimum and maximum values a `signed int' can hold.  */
82*38fd1498Szrj #undef INT_MIN
83*38fd1498Szrj #define INT_MIN (-INT_MAX - 1)
84*38fd1498Szrj #undef INT_MAX
85*38fd1498Szrj #define INT_MAX __INT_MAX__
86*38fd1498Szrj 
87*38fd1498Szrj /* Maximum value an `unsigned int' can hold.  (Minimum is 0).  */
88*38fd1498Szrj #undef UINT_MAX
89*38fd1498Szrj #define UINT_MAX (INT_MAX * 2U + 1U)
90*38fd1498Szrj 
91*38fd1498Szrj /* Minimum and maximum values a `signed long int' can hold.
92*38fd1498Szrj    (Same as `int').  */
93*38fd1498Szrj #undef LONG_MIN
94*38fd1498Szrj #define LONG_MIN (-LONG_MAX - 1L)
95*38fd1498Szrj #undef LONG_MAX
96*38fd1498Szrj #define LONG_MAX __LONG_MAX__
97*38fd1498Szrj 
98*38fd1498Szrj /* Maximum value an `unsigned long int' can hold.  (Minimum is 0).  */
99*38fd1498Szrj #undef ULONG_MAX
100*38fd1498Szrj #define ULONG_MAX (LONG_MAX * 2UL + 1UL)
101*38fd1498Szrj 
102*38fd1498Szrj #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
103*38fd1498Szrj /* Minimum and maximum values a `signed long long int' can hold.  */
104*38fd1498Szrj # undef LLONG_MIN
105*38fd1498Szrj # define LLONG_MIN (-LLONG_MAX - 1LL)
106*38fd1498Szrj # undef LLONG_MAX
107*38fd1498Szrj # define LLONG_MAX __LONG_LONG_MAX__
108*38fd1498Szrj 
109*38fd1498Szrj /* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
110*38fd1498Szrj # undef ULLONG_MAX
111*38fd1498Szrj # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
112*38fd1498Szrj #endif
113*38fd1498Szrj 
114*38fd1498Szrj #if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__)
115*38fd1498Szrj /* Minimum and maximum values a `signed long long int' can hold.  */
116*38fd1498Szrj # undef LONG_LONG_MIN
117*38fd1498Szrj # define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
118*38fd1498Szrj # undef LONG_LONG_MAX
119*38fd1498Szrj # define LONG_LONG_MAX __LONG_LONG_MAX__
120*38fd1498Szrj 
121*38fd1498Szrj /* Maximum value an `unsigned long long int' can hold.  (Minimum is 0).  */
122*38fd1498Szrj # undef ULONG_LONG_MAX
123*38fd1498Szrj # define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
124*38fd1498Szrj #endif
125*38fd1498Szrj 
126*38fd1498Szrj #ifdef __STDC_WANT_IEC_60559_BFP_EXT__
127*38fd1498Szrj /* TS 18661-1 widths of integer types.  */
128*38fd1498Szrj # undef CHAR_WIDTH
129*38fd1498Szrj # define CHAR_WIDTH __SCHAR_WIDTH__
130*38fd1498Szrj # undef SCHAR_WIDTH
131*38fd1498Szrj # define SCHAR_WIDTH __SCHAR_WIDTH__
132*38fd1498Szrj # undef UCHAR_WIDTH
133*38fd1498Szrj # define UCHAR_WIDTH __SCHAR_WIDTH__
134*38fd1498Szrj # undef SHRT_WIDTH
135*38fd1498Szrj # define SHRT_WIDTH __SHRT_WIDTH__
136*38fd1498Szrj # undef USHRT_WIDTH
137*38fd1498Szrj # define USHRT_WIDTH __SHRT_WIDTH__
138*38fd1498Szrj # undef INT_WIDTH
139*38fd1498Szrj # define INT_WIDTH __INT_WIDTH__
140*38fd1498Szrj # undef UINT_WIDTH
141*38fd1498Szrj # define UINT_WIDTH __INT_WIDTH__
142*38fd1498Szrj # undef LONG_WIDTH
143*38fd1498Szrj # define LONG_WIDTH __LONG_WIDTH__
144*38fd1498Szrj # undef ULONG_WIDTH
145*38fd1498Szrj # define ULONG_WIDTH __LONG_WIDTH__
146*38fd1498Szrj # undef LLONG_WIDTH
147*38fd1498Szrj # define LLONG_WIDTH __LONG_LONG_WIDTH__
148*38fd1498Szrj # undef ULLONG_WIDTH
149*38fd1498Szrj # define ULLONG_WIDTH __LONG_LONG_WIDTH__
150*38fd1498Szrj #endif
151*38fd1498Szrj 
152*38fd1498Szrj #endif /* _LIMITS_H___ */
153