c-lex.c (yylex): With -Wtraditional...
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Tue, 30 Nov 1999 23:26:37 +0000 (23:26 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Tue, 30 Nov 1999 23:26:37 +0000 (23:26 +0000)
* c-lex.c (yylex): With -Wtraditional, when the ANSI type of an
integer constant does not match the traditional type, limit the
warnings to cases where the base of the type is ten.

* invoke.texi (-Wtraditional): Document it.

From-SVN: r30730

gcc/ChangeLog
gcc/c-lex.c
gcc/invoke.texi

index b77d214dc18cbd413e28b44ad2c4eee7efa66fda..e0a454bbf7d6d29d8c363de95c8b7789fae17bad 100644 (file)
@@ -1,3 +1,11 @@
+1999-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * c-lex.c (yylex): With -Wtraditional, when the ANSI type of an
+       integer constant does not match the traditional type, limit the
+       warnings to cases where the base of the type is ten.
+
+       * invoke.texi (-Wtraditional): Document it.
+
 Tue Nov 30 15:18:35 1999  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
 
        * combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST
index ab71f787228aca4d6065b1ab30ccec0ed4bf9606..d4710a81942e57dfbb4a1bb4be784131b3acdc76 100644 (file)
@@ -1901,7 +1901,11 @@ yylex ()
 
            type = flag_traditional ? traditional_type : ansi_type;
 
-           if (warn_traditional && traditional_type != ansi_type)
+           /* We assume that constants specified in a non-decimal
+              base are bit patterns, and that the programmer really
+              meant what they wrote.  */
+           if (warn_traditional && base == 10
+               && traditional_type != ansi_type)
              {
                if (TYPE_PRECISION (traditional_type)
                    != TYPE_PRECISION (ansi_type))
index 567c2a2f092389bf4621d6ed8f7e3fb6dcee35a3..f1b064975c621c424dc20afe38d0974a5001422e 100644 (file)
@@ -1692,6 +1692,12 @@ A @code{switch} statement has an operand of type @code{long}.
 @item
 A non-@code{static} function declaration follows a @code{static} one.
 This construct is not accepted by some traditional C compilers.
+
+@item
+The ANSI type of an integer constant has a different width or
+signedness from its traditional type.  This warning is only issued if
+the base of the constant is ten.  I.e. hexadecimal or octal values, which
+typically represent bit patterns, are not warned about.
 @end itemize
 
 @item -Wundef