aboutsummaryrefslogtreecommitdiff
path: root/gcc/system.h
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>1999-02-12 06:32:36 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>1999-02-12 06:32:36 +0000
commitf80d6fd7074325fee6c65da904dc221cb856823b (patch)
treeee2b4ff1729038749350e54551779b36ed147fb0 /gcc/system.h
parent21034cc50049b323c3ad3c6f1cc424dfc19eae80 (diff)
downloadgcc-f80d6fd7074325fee6c65da904dc221cb856823b.zip
gcc-f80d6fd7074325fee6c65da904dc221cb856823b.tar.gz
gcc-f80d6fd7074325fee6c65da904dc221cb856823b.tar.bz2
* system.h: Provide a definition for HOST_WIDEST_INT, etc.
From-SVN: r25164
Diffstat (limited to 'gcc/system.h')
-rw-r--r--gcc/system.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/system.h b/gcc/system.h
index bd23967..3999f42 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -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>