diff options
Diffstat (limited to 'gcc/hwint.h')
-rw-r--r-- | gcc/hwint.h | 101 |
1 files changed, 26 insertions, 75 deletions
diff --git a/gcc/hwint.h b/gcc/hwint.h index 4cc4614b..6d2df9d 100644 --- a/gcc/hwint.h +++ b/gcc/hwint.h @@ -44,40 +44,28 @@ extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1]; #ifdef HAVE_LONG_LONG # define HOST_BITS_PER_LONGLONG (CHAR_BIT * SIZEOF_LONG_LONG) #endif -#ifdef HAVE___INT64 -# define HOST_BITS_PER___INT64 (CHAR_BIT * SIZEOF___INT64) -#endif -/* Set HOST_WIDE_INT. This should be the widest efficient host - integer type. It can be 32 or 64 bits, except that if we are - targeting a machine with 64-bit size_t then it has to be 64 bits. +/* Set HOST_WIDE_INT, this should be always 64 bits. With a sane ABI, 'long' is the largest efficient host integer type. - Thus, we use that unless we have to use 'long long' or '__int64' - because we're targeting a 64-bit machine from a 32-bit host. */ + Thus, we use that unless we have to use 'long long' + because we're on a 32-bit host. */ -#if HOST_BITS_PER_LONG >= 64 -# define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG +#define HOST_BITS_PER_WIDE_INT 64 +#if HOST_BITS_PER_LONG == 64 # define HOST_WIDE_INT long # define HOST_WIDE_INT_C(X) X ## L #else -# if HOST_BITS_PER_LONGLONG >= 64 -# define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONGLONG +# if HOST_BITS_PER_LONGLONG == 64 # define HOST_WIDE_INT long long # define HOST_WIDE_INT_C(X) X ## LL # else -# if HOST_BITS_PER___INT64 >= 64 -# define HOST_BITS_PER_WIDE_INT HOST_BITS_PER___INT64 -# define HOST_WIDE_INT __int64 -# define HOST_WIDE_INT_C(X) X ## i64 -# else - #error "Unable to find a suitable type for HOST_WIDE_INT" -# endif + #error "Unable to find a suitable type for HOST_WIDE_INT" # endif #endif /* Print support for half a host wide int. */ -#define HOST_BITS_PER_HALF_WIDE_INT (HOST_BITS_PER_WIDE_INT / 2) +#define HOST_BITS_PER_HALF_WIDE_INT 32 #if HOST_BITS_PER_HALF_WIDE_INT == HOST_BITS_PER_LONG # define HOST_HALF_WIDE_INT long # define HOST_HALF_WIDE_INT_PRINT HOST_LONG_FORMAT @@ -126,23 +114,15 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__; #if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG # define HOST_WIDE_INT_PRINT HOST_LONG_FORMAT # define HOST_WIDE_INT_PRINT_C "L" - /* 'long' might be 32 or 64 bits, and the number of leading zeroes - must be tweaked accordingly. */ -# if HOST_BITS_PER_WIDE_INT == 64 -# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ - "0x%" HOST_LONG_FORMAT "x%016" HOST_LONG_FORMAT "x" -# define HOST_WIDE_INT_PRINT_PADDED_HEX \ - "%016" HOST_LONG_FORMAT "x" -# else -# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ - "0x%" HOST_LONG_FORMAT "x%08" HOST_LONG_FORMAT "x" -# define HOST_WIDE_INT_PRINT_PADDED_HEX \ - "%08" HOST_LONG_FORMAT "x" -# endif + /* HOST_BITS_PER_WIDE_INT is 64 bits. */ +# define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ + "0x%" HOST_LONG_FORMAT "x%016" HOST_LONG_FORMAT "x" +# define HOST_WIDE_INT_PRINT_PADDED_HEX \ + "%016" HOST_LONG_FORMAT "x" #else # define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT # define HOST_WIDE_INT_PRINT_C "LL" - /* We can assume that 'long long' is at least 64 bits. */ + /* HOST_BITS_PER_WIDE_INT is 64 bits. */ # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x" # define HOST_WIDE_INT_PRINT_PADDED_HEX \ @@ -155,42 +135,17 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__; #define HOST_WIDE_INT_PRINT_HEX "%#" HOST_WIDE_INT_PRINT "x" #define HOST_WIDE_INT_PRINT_HEX_PURE "%" HOST_WIDE_INT_PRINT "x" -/* Set HOST_WIDEST_INT. This is a 64-bit type unless the compiler - in use has no 64-bit type at all; in that case it's 32 bits. */ - -#if HOST_BITS_PER_WIDE_INT >= 64 \ - || (HOST_BITS_PER_LONGLONG < 64 && HOST_BITS_PER___INT64 < 64) -# define HOST_WIDEST_INT HOST_WIDE_INT -# define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_WIDE_INT -# define HOST_WIDEST_INT_PRINT HOST_WIDE_INT_PRINT -# define HOST_WIDEST_INT_PRINT_DEC HOST_WIDE_INT_PRINT_DEC -# define HOST_WIDEST_INT_PRINT_DEC_C HOST_WIDE_INT_PRINT_DEC_C -# define HOST_WIDEST_INT_PRINT_UNSIGNED HOST_WIDE_INT_PRINT_UNSIGNED -# define HOST_WIDEST_INT_PRINT_HEX HOST_WIDE_INT_PRINT_HEX -# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX HOST_WIDE_INT_PRINT_DOUBLE_HEX -# define HOST_WIDEST_INT_C(X) HOST_WIDE_INT (X) -#else -# if HOST_BITS_PER_LONGLONG >= 64 -# define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONGLONG -# define HOST_WIDEST_INT long long -# define HOST_WIDEST_INT_C(X) X ## LL -# else -# if HOST_BITS_PER___INT64 >= 64 -# define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER___INT64 -# define HOST_WIDEST_INT __int64 -# define HOST_WIDEST_INT_C(X) X ## i64 -# else - #error "This line should be impossible to reach" -# endif -# endif -# define HOST_WIDEST_INT_PRINT HOST_LONG_LONG_FORMAT -# define HOST_WIDEST_INT_PRINT_DEC "%" HOST_LONG_LONG_FORMAT "d" -# define HOST_WIDEST_INT_PRINT_DEC_C "%" HOST_LONG_LONG_FORMAT "dLL" -# define HOST_WIDEST_INT_PRINT_UNSIGNED "%" HOST_LONG_LONG_FORMAT "u" -# define HOST_WIDEST_INT_PRINT_HEX "%#" HOST_LONG_LONG_FORMAT "x" -# define HOST_WIDEST_INT_PRINT_DOUBLE_HEX \ - "0x%" HOST_LONG_LONG_FORMAT "x%016" HOST_LONG_LONG_FORMAT "x" -#endif +/* Set HOST_WIDEST_INT. This is a 64-bit type. */ + +#define HOST_WIDEST_INT HOST_WIDE_INT +#define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_WIDE_INT +#define HOST_WIDEST_INT_PRINT HOST_WIDE_INT_PRINT +#define HOST_WIDEST_INT_PRINT_DEC HOST_WIDE_INT_PRINT_DEC +#define HOST_WIDEST_INT_PRINT_DEC_C HOST_WIDE_INT_PRINT_DEC_C +#define HOST_WIDEST_INT_PRINT_UNSIGNED HOST_WIDE_INT_PRINT_UNSIGNED +#define HOST_WIDEST_INT_PRINT_HEX HOST_WIDE_INT_PRINT_HEX +#define HOST_WIDEST_INT_PRINT_DOUBLE_HEX HOST_WIDE_INT_PRINT_DOUBLE_HEX +#define HOST_WIDEST_INT_C(X) HOST_WIDE_INT (X) /* Define HOST_WIDEST_FAST_INT to the widest integer type supported efficiently in hardware. (That is, the widest integer type that fits @@ -203,12 +158,8 @@ typedef HOST_WIDE_INT __gcc_host_wide_int__; # ifdef HAVE_LONG_LONG # define HOST_WIDEST_FAST_INT long long # define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER_LONGLONG -# elif defined (HAVE___INT64) -# define HOST_WIDEST_FAST_INT __int64 -# define HOST_BITS_PER_WIDEST_FAST_INT HOST_BITS_PER___INT64 # else -# error "Your host said it wanted to use long long or __int64 but neither" -# error "exist" +# error "Your host said it wanted to use long long but that does not exist" # endif #else # define HOST_WIDEST_FAST_INT long |