diff options
author | Gavin Romig-Koch <gavin@cygnus.com> | 1999-02-22 08:18:56 +0000 |
---|---|---|
committer | Gavin Romig-Koch <gavin@gcc.gnu.org> | 1999-02-22 08:18:56 +0000 |
commit | e2e0986eb009914748986c469a89aae521805bfb (patch) | |
tree | 100a85bbee6a92b3b340227d4689216288e82779 /gcc/c-lex.c | |
parent | e9c0315e10f7778d51504be20dcb525dec080d44 (diff) | |
download | gcc-e2e0986eb009914748986c469a89aae521805bfb.zip gcc-e2e0986eb009914748986c469a89aae521805bfb.tar.gz gcc-e2e0986eb009914748986c469a89aae521805bfb.tar.bz2 |
c-lex.c (yylex): Replace warning about integer constants being larger than long-longs...
* 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
Diffstat (limited to 'gcc/c-lex.c')
-rw-r--r-- | gcc/c-lex.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/c-lex.c b/gcc/c-lex.c index e054607..8f63b2d 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -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++) |