Make later versions of GCC shut up about @long long@.
authormdw <mdw>
Sun, 8 Oct 2000 12:05:24 +0000 (12:05 +0000)
committermdw <mdw>
Sun, 8 Oct 2000 12:05:24 +0000 (12:05 +0000)
mptypes.c

index dcdf839..f10ed7e 100644 (file)
--- a/mptypes.c
+++ b/mptypes.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: mptypes.c,v 1.3 1999/12/10 23:29:48 mdw Exp $
+ * $Id: mptypes.c,v 1.4 2000/10/08 12:05:24 mdw Exp $
  *
  * Generate `mptypes.h' header file for current architecture
  *
@@ -30,6 +30,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: mptypes.c,v $
+ * Revision 1.4  2000/10/08 12:05:24  mdw
+ * Make later versions of GCC shut up about @long long@.
+ *
  * Revision 1.3  1999/12/10 23:29:48  mdw
  * Change header file guard names.
  *
  * WG14 in their infinite wisdom decided not to use the GCC constant name.
  */
 
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 91)
+#  define EXT __extension__
+#else
+#  define EXT
+#endif
+
 #if defined(ULONG_LONG_MAX) && !defined(ULLONG_MAX)
 #  define ULLONG_MAX ULONG_LONG_MAX
 #endif
@@ -65,7 +74,7 @@
   typedef uintmax_t umax;
 # define P_UMAX PRIuMAX
 #elif defined(ULLONG_MAX)
-  typedef unsigned long long umax;
+  __extension__ typedef unsigned long long umax;
 # define P_UMAX "%llu"
 #else
   typedef unsigned long umax;
@@ -78,7 +87,8 @@
  */
 
 enum {
-  f_stdint
+  f_stdint = 1u,
+  f_ext = 2u
 };
 
 struct itype {
@@ -88,14 +98,14 @@ struct itype {
   unsigned flags;
   unsigned bits;
 } tytab[] = {
-  { "unsigned int", "u",       UINT_MAX,       0 },
-  { "unsigned short", "u",     USHRT_MAX,      0 },
-  { "unsigned long", "ul",     ULONG_MAX,      0 },
+  { "unsigned int",            "u",    UINT_MAX,               0 },
+  { "unsigned short",          "u",    USHRT_MAX,              0 },
+  { "unsigned long",           "ul",   ULONG_MAX,              0 },
 #ifdef ULLONG_MAX
-  { "unsigned long long", "ull", ULLONG_MAX,   0 },
+  { "unsigned long long",      "ull",  EXT ULLONG_MAX,         f_ext },
 #endif
 #ifdef UINTMAX_MAX
-  { "uintmax_t", "u",          UINTMAX_MAX,    f_stdint },
+  { "uintmax_t",               "u",    UINTMAX_MAX,            f_stdint },
 #endif
   { 0,                         0 },
 };
@@ -108,6 +118,7 @@ int main(int argc, char *argv[])
 {
   itype *i;
   itype *largest, *mpw, *mpd;
+  const static char *extstr = "CATACOMB_MPTYPES_EXTENSION ";
 
   /* --- Find the bitcounts --- */
 
@@ -167,20 +178,34 @@ int main(int argc, char *argv[])
 #endif\n\
 ");
   }
+  if ((mpd->flags | mpw->flags) & f_ext) {
+    printf("\
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 91)\n\
+#  define %s __extension__\n\
+#else\n\
+#  define %s\n\
+#endif\n\
+", extstr, extstr);
+  }
   printf("\
-typedef %s mpw;\n\
+%stypedef %s mpw;\n\
 #define MPW_BITS %u\n\
-#define MPW_MAX " P_UMAX "%s\n\
+#define MPW_MAX %s" P_UMAX "%s\n\
 \n\
-typedef %s mpd;\n\
+%stypedef %s mpd;\n\
 #define MPD_BITS %u\n\
-#define MPD_MAX " P_UMAX "%s\n\
+#define MPD_MAX %s" P_UMAX "%s\n\
 \n\
 #endif\n\
 ",
-  mpw->name, mpw->bits, mpw->max, mpw->suff,
-  mpd->name, mpd->bits, mpd->max, mpd->suff);
+  mpw->flags & f_ext ? extstr : "", mpw->name,
+  mpw->bits,
+  mpw->flags & f_ext ? extstr : "", mpw->max, mpw->suff,
+  mpd->flags & f_ext ? extstr : "", mpd->name,
+  mpd->bits,
+  mpd->flags & f_ext ? extstr : "", mpd->max, mpd->suff);
 
   return (0);
 }
+
 /*----- That's all, folks -------------------------------------------------*/