c-decl.c (duplicate_decls, [...]): Restrict -Wtraditional warnings to user code.
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>
Mon, 21 Aug 2000 14:54:28 +0000 (14:54 +0000)
committerKaveh Ghazi <ghazi@gcc.gnu.org>
Mon, 21 Aug 2000 14:54:28 +0000 (14:54 +0000)
* c-decl.c (duplicate_decls, define_label): Restrict -Wtraditional
warnings to user code.

* c-lex.c (readescape, yylex): Likewise.

* c-typeck.c (store_init_value, process_init_element): Likewise
(c_expand_start_case): Format.

From-SVN: r35845

gcc/ChangeLog
gcc/c-decl.c
gcc/c-lex.c
gcc/c-typeck.c

index 2ef3cea7da6c39cc432f6d8d2e162d95e93c5515..8172c6feb0fa09e8d9a0bf571d3a5caa04bd7e04 100644 (file)
@@ -1,3 +1,13 @@
+2000-08-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * c-decl.c (duplicate_decls, define_label): Restrict -Wtraditional
+       warnings to user code.
+
+       * c-lex.c (readescape, yylex): Likewise.
+
+       * c-typeck.c (store_init_value, process_init_element): Likewise
+       (c_expand_start_case): Format.
+
 2000-08-18  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
 
        * mips/linux.h (LINK_SPEC): Use %(endian_spec).
index c9afb28ccd2ff7d9cf20abcae231d600232a132b..17b131af1894cf18df9d9836c8fe37e964c75eff 100644 (file)
@@ -1760,7 +1760,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
 
          /* If warn_traditional, warn when a non-static function
             declaration follows a static one.  */
-         if (warn_traditional
+         if (warn_traditional && !in_system_header
              && TREE_CODE (olddecl) == FUNCTION_DECL
              && !TREE_PUBLIC (olddecl)
              && TREE_PUBLIC (newdecl))
@@ -2751,7 +2751,7 @@ define_label (filename, line, name)
       decl = lookup_label (name);
     }
 
-  if (warn_traditional && lookup_name (name))
+  if (warn_traditional && !in_system_header && lookup_name (name))
     warning ("traditional C lacks a separate namespace for labels, identifier `%s' conflicts",
             IDENTIFIER_POINTER (name));
 
index 77442e3164870b32bcd4df15a70c4fdb6cc1cda5..c1b85c712a3598daf8166358866ed84a7addad56 100644 (file)
@@ -902,7 +902,7 @@ readescape (ignore_ptr)
   switch (c)
     {
     case 'x':
-      if (warn_traditional)
+      if (warn_traditional && !in_system_header)
        warning ("the meaning of `\\x' varies with -traditional");
 
       if (flag_traditional)
@@ -987,7 +987,7 @@ readescape (ignore_ptr)
       return TARGET_BS;
 
     case 'a':
-      if (warn_traditional)
+      if (warn_traditional && !in_system_header)
        warning ("the meaning of `\\a' varies with -traditional");
 
       if (flag_traditional)
@@ -1912,7 +1912,7 @@ yylex ()
            /* 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
+           if (warn_traditional && !in_system_header && base == 10
                && traditional_type != ansi_type)
              {
                if (TYPE_PRECISION (traditional_type)
index 8459f47633d7017767d261b318529039007ad73f..9cd27e581d3f2d4939ce26969393898c5a46331d 100644 (file)
@@ -4396,7 +4396,7 @@ store_init_value (decl, init)
     }
 #endif
 
-  if (warn_traditional
+  if (warn_traditional && !in_system_header
       && AGGREGATE_TYPE_P (TREE_TYPE (decl)) && ! TREE_STATIC (decl))
     warning ("traditional C rejects automatic aggregate initialization");
 
@@ -6400,7 +6400,7 @@ process_init_element (value)
             code appears conditioned on e.g. __STDC__ to avoid
             "missing initializer" warnings and relies on default
             initialization to zero in the traditional C case.  */
-         if (warn_traditional && !integer_zerop (value))
+         if (warn_traditional && !in_system_header && !integer_zerop (value))
            warning ("traditional C rejects initialization of unions");
 
          /* Accept a string constant to initialize a subarray.  */
@@ -6739,8 +6739,7 @@ c_expand_start_case (exp)
       tree index;
       type = TYPE_MAIN_VARIANT (TREE_TYPE (exp));
 
-      if (warn_traditional
-         && ! in_system_header
+      if (warn_traditional && !in_system_header
          && (type == long_integer_type_node
              || type == long_unsigned_type_node))
        warning ("`long' switch expression not converted to `int' in ISO C");