* system.h: Provide a definition for HOST_WIDEST_INT, etc.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Fri, 12 Feb 1999 06:32:36 +0000 (06:32 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Fri, 12 Feb 1999 06:32:36 +0000 (06:32 +0000)
From-SVN: r25164

gcc/ChangeLog
gcc/system.h

index 7e03bf54acc0618e7d77fa180da6572c99e43d1a..47b8e50e41845d2f9a54757c4ccf62e5e2b279a3 100644 (file)
@@ -1,3 +1,7 @@
+Fri Feb 12 09:24:26 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * system.h: Provide a definition for HOST_WIDEST_INT, etc.
+
 Fri Feb 12 23:37:26 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
        * config/c4x/c4x.c (c4x_address_cost): Revert 9 Feb change. 
index bd23967f71ac146eb5b2355f4d3832c8ee97e079..3999f42c4514fa3c40abda6ad32d91970b3b8807 100644 (file)
@@ -159,6 +159,34 @@ extern int errno;
 # include <limits.h>
 #endif
 
+/* Find HOST_WIDEST_INT and set its bit size, type and print macros.
+   It will be the largest integer mode supported by the host which may
+   (or may not) be larger than HOST_WIDE_INT.  This must appear after
+   <limits.h> since we only use `long long' if its bigger than a
+   `long' and also if it is supported by macros in limits.h.  For old
+   hosts which don't have a limits.h (and thus won't include it in
+   stage2 cause we don't rerun configure) we assume gcc supports long
+   long.)  Note, you won't get these defined if you don't include
+   {ht}config.h before this file to set the HOST_BITS_PER_* macros. */
+
+#ifndef HOST_WIDEST_INT
+# if defined (HOST_BITS_PER_LONG) && defined (HOST_BITS_PER_LONGLONG)
+#  if (HOST_BITS_PER_LONGLONG > HOST_BITS_PER_LONG) && (defined (LONG_LONG_MAX) || defined (LONGLONG_MAX) || defined (LLONG_MAX) || defined (__GNUC__))
+#   define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONGLONG
+#   define HOST_WIDEST_INT long long
+#   define HOST_WIDEST_INT_PRINT_DEC "%lld"
+#   define HOST_WIDEST_INT_PRINT_UNSIGNED "%llu"
+#   define HOST_WIDEST_INT_PRINT_HEX "0x%llx"
+#  else
+#   define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONG
+#   define HOST_WIDEST_INT long
+#   define HOST_WIDEST_INT_PRINT_DEC "%ld"
+#   define HOST_WIDEST_INT_PRINT_UNSIGNED "%lu"
+#   define HOST_WIDEST_INT_PRINT_HEX "0x%lx"
+#  endif /*(long long>long) && (LONG_LONG_MAX||LONGLONG_MAX||LLONG_MAX||GNUC)*/
+# endif /* defined(HOST_BITS_PER_LONG) && defined(HOST_BITS_PER_LONGLONG) */
+#endif /* ! HOST_WIDEST_INT */
+
 #ifdef TIME_WITH_SYS_TIME
 # include <sys/time.h>
 # include <time.h>