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