diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eb0d492afee..045faac5554 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-11-07 Manuel López-Ibáñez + + PR c/53063 + * common.opt (Wswitch,Wswitch-default,Wswitch-enum): Move to c.opt. + 2012-11-07 Yufeng Zhang * config/aarch64/aarch64.c (aarch64_expand_prologue): add the missing diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 6f343ef2419..9a5943b3318 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,21 @@ +2012-11-07 Manuel López-Ibáñez + + PR c/53063 + * c.opt(Warray-bounds,Wdelete-non-virtual-dtor,Wenum-compare, + Wmain,Woverlength-strings, Wunknown-pragmas,Wunused-macros): + Use LangEnabledBy. + (Wswitch,Wswitch-default,Wswitch-enum): Likewise. Move here from + common.opt. + (Wvariadic-macros): Init(1). + * c-opts.c (c_common_handle_option): Do not handle them + explicitly. + (c_common_post_options): Likewise. + (sanitize_cpp_opts): warn_unused_macros is now + cpp_warn_unused_macros. + (push_command_line_include): Likewise. + * c-common.c (warn_unknown_pragmas): Do not define. + * c-common.h (warn_unknown_pragmas): Do not declare. + 2012-11-07 Manuel López-Ibáñez PR c/51294 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 90c1992129f..f15b1d82706 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -193,10 +193,6 @@ const char *pch_file; user's namespace. */ int flag_iso; -/* Warn about #pragma directives that are not recognized. */ - -int warn_unknown_pragmas; /* Tri state variable. */ - /* Warn about format/argument anomalies in calls to formatted I/O functions (*printf, *scanf, strftime, strfmon, etc.). */ diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index c78804d36e2..85ec10fbdc2 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -585,10 +585,6 @@ extern const char *pch_file; extern int flag_iso; -/* Warn about #pragma directives that are not recognized. */ - -extern int warn_unknown_pragmas; /* Tri state variable. */ - /* Warn about format/argument anomalies in calls to formatted I/O functions (*printf, *scanf, strftime, strfmon, etc.). */ diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index b420d2a2cc1..6fedd1e7502 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -96,12 +96,6 @@ static bool std_cxx_inc = true; /* If the quote chain has been split by -I-. */ static bool quote_chain_split; -/* If -Wunused-macros. */ -static bool warn_unused_macros; - -/* If -Wvariadic-macros. */ -static bool warn_variadic_macros = true; - /* Number of deferred options. */ static size_t deferred_count; @@ -365,26 +359,6 @@ c_common_handle_option (size_t scode, const char *arg, int value, case OPT_Wall: /* ??? Don't add new options here. Use LangEnabledBy in c.opt. */ set_Wformat (value); - warn_switch = value; - warn_array_bounds = value; - - /* Only warn about unknown pragmas that are not in system - headers. */ - warn_unknown_pragmas = value; - - if (!c_dialect_cxx ()) - { - /* We set this to 2 here, but 1 in -Wmain, so -ffreestanding - can turn it off only if it's not explicit. */ - if (warn_main == -1) - warn_main = (value ? 2 : 0); - - /* In C, -Wall and -Wc++-compat turns on -Wenum-compare, - which we do here. In C++ it is on by default, which is - done in c_common_post_options. */ - if (warn_enum_compare == -1) - warn_enum_compare = value; - } cpp_opts->warn_trigraphs = value; cpp_opts->warn_comments = value; @@ -400,10 +374,6 @@ c_common_handle_option (size_t scode, const char *arg, int value, break; case OPT_Wc___compat: - /* Because -Wenum-compare is the default in C++, -Wc++-compat - implies -Wenum-compare. */ - if (warn_enum_compare == -1 && value) - warn_enum_compare = value; cpp_opts->warn_cxx_operator_names = value; break; @@ -480,22 +450,10 @@ c_common_handle_option (size_t scode, const char *arg, int value, case OPT_Wunknown_pragmas: /* Set to greater than 1, so that even unknown pragmas in system headers will be warned about. */ + /* ??? There is no way to handle this automatically for now. */ warn_unknown_pragmas = value * 2; break; - case OPT_Wunused_macros: - warn_unused_macros = value; - break; - - case OPT_Wvariadic_macros: - warn_variadic_macros = value; - break; - - case OPT_Weffc__: - if (value) - warn_nonvdtor = true; - break; - case OPT_ansi: if (!c_dialect_cxx ()) set_std_c89 (false, true); @@ -692,10 +650,6 @@ c_common_handle_option (size_t scode, const char *arg, int value, case OPT_Wpedantic: cpp_opts->cpp_pedantic = 1; cpp_opts->warn_endif_labels = 1; - if (warn_overlength_strings == -1) - warn_overlength_strings = 1; - if (warn_main == -1) - warn_main = 2; break; case OPT_print_objc_runtime_info: @@ -883,21 +837,21 @@ c_common_post_options (const char **pfilename) /* -Woverlength-strings is off by default, but is enabled by -Wpedantic. It is never enabled in C++, as the minimum limit is not normative in that standard. */ - if (warn_overlength_strings == -1 || c_dialect_cxx ()) + if (c_dialect_cxx ()) warn_overlength_strings = 0; /* Wmain is enabled by default in C++ but not in C. */ /* Wmain is disabled by default for -ffreestanding (!flag_hosted), - even if -Wall was given (warn_main will be 2 if set by -Wall, 1 - if set by -Wmain). */ + even if -Wall or -Wpedantic was given (warn_main will be 2 if set + by -Wall, 1 if set by -Wmain). */ if (warn_main == -1) warn_main = (c_dialect_cxx () && flag_hosted) ? 1 : 0; else if (warn_main == 2) warn_main = flag_hosted ? 1 : 0; - /* In C, -Wall and -Wc++-compat enable -Wenum-compare, which we do - in c_common_handle_option; if it has not yet been set, it is - disabled by default. In C++, it is enabled by default. */ + /* In C, -Wall and -Wc++-compat enable -Wenum-compare; if it has not + yet been set, it is disabled by default. In C++, it is enabled + by default. */ if (warn_enum_compare == -1) warn_enum_compare = c_dialect_cxx () ? 1 : 0; @@ -1228,7 +1182,7 @@ sanitize_cpp_opts (void) /* Similarly with -Wno-variadic-macros. No check for c99 here, since this also turns off warnings about GCCs extension. */ cpp_opts->warn_variadic_macros - = warn_variadic_macros && (pedantic || warn_traditional); + = cpp_warn_variadic_macros && (pedantic || warn_traditional); /* If we're generating preprocessor output, emit current directory if explicitly requested or if debugging information is enabled. @@ -1239,7 +1193,7 @@ sanitize_cpp_opts (void) if (cpp_opts->directives_only) { - if (warn_unused_macros) + if (cpp_warn_unused_macros) error ("-fdirectives-only is incompatible with -Wunused_macros"); if (cpp_opts->traditional) error ("-fdirectives-only is incompatible with -traditional"); @@ -1382,7 +1336,7 @@ push_command_line_include (void) { include_cursor++; /* -Wunused-macros should only warn about macros defined hereafter. */ - cpp_opts->warn_unused_macros = warn_unused_macros; + cpp_opts->warn_unused_macros = cpp_warn_unused_macros; /* Restore the line map from . */ if (!cpp_opts->preprocessed) cpp_change_file (parse_in, LC_RENAME, this_input_filename); diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 06d6e363c98..90082143ae1 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -268,6 +268,10 @@ Wall C ObjC C++ ObjC++ Warning Enable most warning messages +Warray-bounds +LangEnabledBy(C ObjC C++ ObjC++,Wall) +; in common.opt + Wassign-intercept ObjC ObjC++ Var(warn_assign_intercept) Warning Warn whenever an Objective-C assignment is being intercepted by the garbage collector @@ -332,6 +336,10 @@ Wdelete-non-virtual-dtor C++ ObjC++ Var(warn_delnonvdtor) Warning LangEnabledBy(C++ ObjC++,Wall) Warn about deleting polymorphic objects with non-virtual destructors +Wdelete-non-virtual-dtor +LangEnabledBy(C++ ObjC++,Weffc++) +; + Wdeprecated C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning Warn if a deprecated compiler feature, class, method, or field is used @@ -353,9 +361,13 @@ C ObjC C++ ObjC++ Warning Warn about stray tokens after #elif and #endif Wenum-compare -C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning +C ObjC C++ ObjC++ Var(warn_enum_compare) Init(-1) Warning LangEnabledBy(C ObjC,Wall) Warn about comparison of different enum types +Wenum-compare +LangEnabledBy(C ObjC,Wc++-compat) +; + Werror C ObjC C++ ObjC++ ; Documented in common.opt @@ -459,9 +471,13 @@ C ObjC C++ ObjC++ Var(warn_long_long) Init(-1) Warning Do not warn about using \"long long\" when -pedantic Wmain -C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning +C ObjC C++ ObjC++ Var(warn_main) Init(-1) Warning LangEnabledBy(C ObjC,Wall, 2, 0) Warn about suspicious declarations of \"main\" +Wmain +LangEnabledBy(C ObjC C++ ObjC++,Wpedantic, 2, 0) +; + Wmissing-braces C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall) Warn about possibly missing braces around initializers @@ -481,6 +497,18 @@ Wsuggest-attribute=format C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning Warn about functions which might be candidates for format attributes +Wswitch +C ObjC C++ ObjC++ Var(warn_switch) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall) +Warn about enumerated switches, with no default, missing a case + +Wswitch-default +C ObjC C++ ObjC++ Var(warn_switch_default) Warning +Warn about enumerated switches missing a \"default:\" statement + +Wswitch-enum +C ObjC C++ ObjC++ Var(warn_switch_enum) Warning +Warn about all enumerated switches missing a specific case + Wmissing-format-attribute C ObjC C++ ObjC++ Alias(Wsuggest-attribute=format) ; @@ -550,7 +578,7 @@ C ObjC Var(warn_old_style_definition) Warning Warn if an old-style parameter definition is used Woverlength-strings -C ObjC C++ ObjC++ Var(warn_overlength_strings) Init(-1) Warning +C ObjC C++ ObjC++ Var(warn_overlength_strings) Warning LangEnabledBy(C ObjC C++ ObjC++,Wpedantic) Warn if a string is longer than the maximum portable length specified by the standard Woverloaded-virtual @@ -706,7 +734,7 @@ C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall) ; Wunknown-pragmas -C ObjC C++ ObjC++ Warning +C ObjC C++ ObjC++ Warning Var(warn_unknown_pragmas) LangEnabledBy(C ObjC C++ ObjC++,Wall, 1, 0) Warn about unrecognized pragmas Wunsuffixed-float-constants @@ -722,7 +750,7 @@ C ObjC C++ ObjC++ Var(warn_unused_local_typedefs) Warning EnabledBy(Wunused) Warn when typedefs locally defined in a function are not used Wunused-macros -C ObjC C++ ObjC++ Warning +C ObjC C++ ObjC++ Var(cpp_warn_unused_macros) Warning Warn about macros defined in the main file that are not used Wunused-result @@ -730,8 +758,8 @@ C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value Wvariadic-macros -C ObjC C++ ObjC++ Warning -Do not warn about using variadic macros when -pedantic +C ObjC C++ ObjC++ Var(cpp_warn_variadic_macros) Init(1) Warning +Warn about using variadic macros Wvarargs C ObjC C++ ObjC++ Warning Var(warn_varargs) Init(1) diff --git a/gcc/common.opt b/gcc/common.opt index 6b95c0558b7..f947a72cc2e 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -632,18 +632,6 @@ Wsuggest-attribute=noreturn Common Var(warn_suggest_attribute_noreturn) Warning Warn about functions which might be candidates for __attribute__((noreturn)) -Wswitch -Common Var(warn_switch) Warning -Warn about enumerated switches, with no default, missing a case - -Wswitch-default -Common Var(warn_switch_default) Warning -Warn about enumerated switches missing a \"default:\" statement - -Wswitch-enum -Common Var(warn_switch_enum) Warning -Warn about all enumerated switches missing a specific case - Wsystem-headers Common Var(warn_system_headers) Warning Do not suppress warnings from system headers diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f33dffb0f64..c030bf5b86d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2012-11-07 Manuel López-Ibáñez + + PR c/53063 + * options.c (set_Wall): Do not set warn_switch here. + 2012-11-06 Janus Weil PR fortran/54917 diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index 08c551451e9..e05b93581bc 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -478,7 +478,6 @@ set_Wall (int setting) gfc_option.warn_target_lifetime = setting; warn_return_type = setting; - warn_switch = setting; warn_uninitialized = setting; warn_maybe_uninitialized = setting; }