X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fc-opts.c;h=589b05be3893baf3b763e338e3815fe340d5482b;hb=e4cdb4c6a9fe30297ea553e9724a836fd46fe331;hp=8b31b8879e7cb129cf2f8bff26ff814bc13f108d;hpb=1c2f00122e66a5bdcf326b3f6334e93146ca7cc5;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 8b31b8879e7..589b05be389 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -54,7 +54,7 @@ along with GCC; see the file COPYING3. If not see #endif /* CPP's options. */ -static cpp_options *cpp_opts; +cpp_options *cpp_opts; /* Input filename. */ static const char *this_input_filename; @@ -321,7 +321,7 @@ c_common_handle_option (size_t scode, const char *arg, int value) error ("-I- specified twice"); quote_chain_split = true; split_quote_chain (); - inform ("obsolete option -I- used, please use -iquote instead"); + inform (input_location, "obsolete option -I- used, please use -iquote instead"); } break; @@ -376,7 +376,7 @@ c_common_handle_option (size_t scode, const char *arg, int value) break; case OPT_Wall: - set_Wunused (value); + warn_unused = value; set_Wformat (value); set_Wimplicit (value); warn_char_subscripts = value; @@ -404,9 +404,12 @@ c_common_handle_option (size_t scode, const char *arg, int value) warn_uninitialized = (value ? 2 : 0); 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. */ - warn_main = value * 2; + { + /* 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); + } else { /* C++-specific warnings. */ @@ -423,6 +426,10 @@ c_common_handle_option (size_t scode, const char *arg, int value) warn_pointer_sign = 1; break; + case OPT_Wbuiltin_macro_redefined: + cpp_opts->warn_builtin_macro_redefined = value; + break; + case OPT_Wcomment: case OPT_Wcomments: cpp_opts->warn_comments = value; @@ -467,13 +474,6 @@ c_common_handle_option (size_t scode, const char *arg, int value) cpp_opts->warn_invalid_pch = value; break; - case OPT_Wmain: - if (value) - warn_main = 1; - else - warn_main = -1; - break; - case OPT_Wmissing_include_dirs: cpp_opts->warn_missing_include_dirs = value; break; @@ -615,9 +615,6 @@ c_common_handle_option (size_t scode, const char *arg, int value) case OPT_fhosted: flag_hosted = value; flag_no_builtin = !value; - /* warn_main will be 2 if set by -Wall, 1 if set by -Wmain */ - if (!value && warn_main == 2) - warn_main = 0; break; case OPT_fshort_double: @@ -907,6 +904,8 @@ c_common_handle_option (size_t scode, const char *arg, int value) warn_pointer_sign = 1; if (warn_overlength_strings == -1) warn_overlength_strings = 1; + if (warn_main == -1) + warn_main = 2; break; case OPT_print_objc_runtime_info: @@ -1071,6 +1070,15 @@ c_common_post_options (const char **pfilename) if (warn_overlength_strings == -1 || 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). */ + 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, -Wconversion enables -Wsign-conversion (unless disabled through -Wno-sign-conversion). While in C++, -Wsign-conversion needs to be requested explicitly. */