aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-opts.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@gcc.gnu.org>2003-05-03 21:44:31 +0000
committerZack Weinberg <zack@gcc.gnu.org>2003-05-03 21:44:31 +0000
commit87f85ea0660e58ac0f2447d1c4a593863601df0e (patch)
treee37cc59b695cc55218915e90bcce25c7621fdf58 /gcc/c-opts.c
parente7b5f0c9b4aa73a1de50162ae18101dab4f86ce4 (diff)
downloadgcc-87f85ea0660e58ac0f2447d1c4a593863601df0e.zip
gcc-87f85ea0660e58ac0f2447d1c4a593863601df0e.tar.gz
gcc-87f85ea0660e58ac0f2447d1c4a593863601df0e.tar.bz2
re PR c/10604 (-Wall includes sign conversion warning [3.3 regression])
PR c/10604 * c-common.c (warn_sign_compare): Initialize to -1. * c-opts.c (c_common_init_options): Don't set warn_sign_compare here. (c_common_decode_option <OPT_Wall>): Set warn_sign_compare for C++ only. (c_common_post_options): Set warn_sign_compare from extra_warnings if it's still -1 at this point. * toplev.c (maybe_warn_unused_parameter): New static variable. (set_Wextra): New static function. (W_options): Remove "extra". (decode_W_option): Call set_Wextra. (independent_decode_option): Likewise. (set_Wunused): Cooperate with set_Wextra in setting warn_unused_parameter. (rest_of_compilation): No need to check extra_warnings as well as warn_uninitialized. * c-typeck.c (build_binary_op, build_conditional_expr): No need to check extra_warnings as well as warn_sign_compare. (internal_build_compound_expr): No need to check extra_warnings as well as warn_unused_value. * function.c (expand_function_end): No need to check extra_warnings as well as warn_unused_parameter. * stmt.c (expand_expr_stmt_value): No need to check extra_warnings as well as warn_unused_value. * cp/typeck.c (build_x_compound_expr): No need to check extra_warnings as well as warn_unused_value. * doc/invoke.texi: Clarify documentation of -Wsign-compare. * gcc.dg/compare7.c, g++.dg/warn/compare1.C: New testcases. * Makefile.in: Disable -Werror for gengtype-lex.o. From-SVN: r66436
Diffstat (limited to 'gcc/c-opts.c')
-rw-r--r--gcc/c-opts.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/c-opts.c b/gcc/c-opts.c
index ee7be16..0a28982 100644
--- a/gcc/c-opts.c
+++ b/gcc/c-opts.c
@@ -595,8 +595,6 @@ c_common_init_options (lang)
flag_const_strings = (lang == clk_cplusplus);
warn_pointer_arith = (lang == clk_cplusplus);
- if (lang == clk_c)
- warn_sign_compare = -1;
}
/* Handle one command-line option in (argc, argv).
@@ -805,7 +803,8 @@ c_common_decode_option (argc, argv)
warn_parentheses = on;
warn_return_type = on;
warn_sequence_point = on; /* Was C only. */
- warn_sign_compare = on; /* Was C++ only. */
+ if (c_language == clk_cplusplus)
+ warn_sign_compare = on;
warn_switch = on;
warn_strict_aliasing = on;
@@ -1526,6 +1525,11 @@ c_common_post_options (pfilename)
}
}
+ /* -Wextra implies -Wsign-compare, but not if explicitly
+ overridden. */
+ if (warn_sign_compare == -1)
+ warn_sign_compare = extra_warnings;
+
/* Special format checking options don't work without -Wformat; warn if
they are used. */
if (warn_format_y2k && !warn_format)