This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
We were inconsistent in our handling of -Wtraditional warnings as to whether we warned in system headers. (Some of it was my own fault.) I installed this patch which makes it more regular. Bootstrapped on solaris2.7 and irix6.2. --Kaveh Index: ChangeLog =================================================================== RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v retrieving revision 1.7478 diff -u -p -r1.7478 ChangeLog --- ChangeLog 2000/08/21 14:35:29 1.7478 +++ ChangeLog 2000/08/21 14:52:20 @@ -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: c-decl.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/c-decl.c,v retrieving revision 1.143 diff -u -p -r1.143 c-decl.c --- c-decl.c 2000/08/21 14:30:37 1.143 +++ c-decl.c 2000/08/21 14:52:30 @@ -1760,7 +1760,7 @@ duplicate_decls (newdecl, olddecl, diffe /* 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: c-lex.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/c-lex.c,v retrieving revision 1.94 diff -u -p -r1.94 c-lex.c --- c-lex.c 2000/08/10 15:21:17 1.94 +++ c-lex.c 2000/08/21 14:52:32 @@ -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: c-typeck.c =================================================================== RCS file: /cvs/gcc/egcs/gcc/c-typeck.c,v retrieving revision 1.83 diff -u -p -r1.83 c-typeck.c --- c-typeck.c 2000/08/13 21:31:09 1.83 +++ c-typeck.c 2000/08/21 14:52:39 @@ -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");
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |