c-lex.c (yylex): Replace warning about integer constants being larger than long-longs...
authorGavin Romig-Koch <gavin@cygnus.com>
Mon, 22 Feb 1999 08:18:56 +0000 (08:18 +0000)
committerGavin Romig-Koch <gavin@gcc.gnu.org>
Mon, 22 Feb 1999 08:18:56 +0000 (08:18 +0000)
* c-lex.c (yylex): Replace warning about integer constants being
larger than long-longs, with a warning about integer constants
        being larger than the largest target integer.

From-SVN: r25364

gcc/ChangeLog
gcc/c-lex.c

index 65bec6f9e5045bb63b3098505ea348c3935ea064..75981688af9044e33077c1cb444156bd78c8c963 100644 (file)
@@ -1,3 +1,9 @@
+Mon Feb 22 10:55:00 1999  Gavin Romig-Koch  <gavin@cygnus.com>
+
+       * c-lex.c (yylex): Replace warning about integer constants being
+       larger than long-longs, with a warning about integer constants 
+        being larger than the largest target integer.
+
 Fri Feb 19 18:18:56 1999  Don Bowman  <don@pixstream.com>
 
        * configure.in (mips*-*-vxworks*): Enable gthreads vxworks support.
index e0546072319bbfe63c1183d93903309cee12c2c3..8f63b2db7dc3e31b62ef59fb03ab4439a62f2045 100644 (file)
@@ -1698,15 +1698,15 @@ yylex ()
                c = GETC();
              }
 
-           /* If the constant won't fit in an unsigned long long,
-              then warn that the constant is out of range.  */
+           /* If the constant won't fit in the targets widest int,
+              or it won't fit in the host's representation for ints, 
+              then warn that the constant is out of range. */
 
-           /* ??? This assumes that long long and long integer types are
-              a multiple of 8 bits.  This better than the original code
-              though which assumed that long was exactly 32 bits and long
-              long was exactly 64 bits.  */
-
-           bytes = TYPE_PRECISION (long_long_integer_type_node) / 8;
+#if HOST_BITS_PER_WIDE_INT >= 64
+           bytes = TYPE_PRECISION (intTI_type_node) / HOST_BITS_PER_CHAR;
+#else
+           bytes = TYPE_PRECISION (intDI_type_node) / HOST_BITS_PER_CHAR;
+#endif
 
            warn = overflow;
            for (i = bytes; i < TOTAL_PARTS; i++)