X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fc-opts.c;h=ebf23e571d79fb5a94d7930ffb1e6040f5f25e65;hb=333efcddecc598fd4b3522664244cea029958a00;hp=36c3f5bd68e9866795069b5a15bf8a0c1caa99f6;hpb=9a96a320529da1fc4a6ee6dd98a56a01906d8860;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/c-opts.c b/gcc/c-opts.c index 36c3f5bd68e..ebf23e571d7 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -460,10 +460,27 @@ c_common_handle_option (size_t scode, const char *arg, int value) cpp_opts->warn_multichar = value; break; + case OPT_Wnormalized_: + if (!value || (arg && strcasecmp (arg, "none") == 0)) + cpp_opts->warn_normalize = normalized_none; + else if (!arg || strcasecmp (arg, "nfkc") == 0) + cpp_opts->warn_normalize = normalized_KC; + else if (strcasecmp (arg, "id") == 0) + cpp_opts->warn_normalize = normalized_identifier_C; + else if (strcasecmp (arg, "nfc") == 0) + cpp_opts->warn_normalize = normalized_C; + else + error ("argument %qs to %<-Wnormalized%> not recognized", arg); + break; + case OPT_Wreturn_type: warn_return_type = value; break; + case OPT_Wstrict_null_sentinel: + warn_strict_null_sentinel = value; + break; + case OPT_Wsystem_headers: cpp_opts->warn_system_headers = value; break; @@ -537,7 +554,7 @@ c_common_handle_option (size_t scode, const char *arg, int value) case OPT_fvtable_thunks: case OPT_fxref: case OPT_fvtable_gc: - warning ("switch %qs is no longer supported", option->opt_text); + warning (0, "switch %qs is no longer supported", option->opt_text); break; case OPT_faccess_control: @@ -650,7 +667,7 @@ c_common_handle_option (size_t scode, const char *arg, int value) break; case OPT_fhandle_exceptions: - warning ("-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"); + warning (0, "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"); flag_exceptions = value; break; @@ -966,17 +983,22 @@ c_common_post_options (const char **pfilename) /* Special format checking options don't work without -Wformat; warn if they are used. */ if (warn_format_y2k && !warn_format) - warning ("-Wformat-y2k ignored without -Wformat"); + warning (0, "-Wformat-y2k ignored without -Wformat"); if (warn_format_extra_args && !warn_format) - warning ("-Wformat-extra-args ignored without -Wformat"); + warning (0, "-Wformat-extra-args ignored without -Wformat"); if (warn_format_zero_length && !warn_format) - warning ("-Wformat-zero-length ignored without -Wformat"); + warning (0, "-Wformat-zero-length ignored without -Wformat"); if (warn_format_nonliteral && !warn_format) - warning ("-Wformat-nonliteral ignored without -Wformat"); + warning (0, "-Wformat-nonliteral ignored without -Wformat"); if (warn_format_security && !warn_format) - warning ("-Wformat-security ignored without -Wformat"); + warning (0, "-Wformat-security ignored without -Wformat"); if (warn_missing_format_attribute && !warn_format) - warning ("-Wmissing-format-attribute ignored without -Wformat"); + warning (0, "-Wmissing-format-attribute ignored without -Wformat"); + + /* C99 requires special handling of complex multiplication and division; + -ffast-math and -fcx-limited-range are handled in process_options. */ + if (flag_isoc99) + flag_complex_method = 2; if (flag_preprocess_only) { @@ -1078,19 +1100,24 @@ c_common_parse_file (int set_yydebug) yydebug = set_yydebug; #else if (set_yydebug) - warning ("YYDEBUG was not defined at build time, -dy ignored"); + warning (0, "YYDEBUG was not defined at build time, -dy ignored"); #endif i = 0; for (;;) { + /* Start the main input file, if the debug writer wants it. */ + if (debug_hooks->start_end_main_source_file) + (*debug_hooks->start_source_file) (0, this_input_filename); finish_options (); pch_init (); push_file_scope (); c_parse_file (); finish_file (); pop_file_scope (); - + /* And end the main input file, if the debug writer wants it */ + if (debug_hooks->start_end_main_source_file) + (*debug_hooks->end_source_file) (0); if (++i >= num_in_fnames) break; cpp_undef_all (parse_in); @@ -1221,7 +1248,7 @@ sanitize_cpp_opts (void) /* Disable -dD, -dN and -dI if normal output is suppressed. Allow -dM since at least glibc relies on -M -dM to work. */ - /* Also, flag_no_output implies flag_no_line_commands, always. */ + /* Also, flag_no_output implies flag_no_line_commands, always. */ if (flag_no_output) { if (flag_dump_macros != 'M') @@ -1279,7 +1306,10 @@ finish_options (void) { size_t i; - cpp_change_file (parse_in, LC_RENAME, _("")); + cb_file_change (parse_in, + linemap_add (&line_table, LC_RENAME, 0, + _(""), 0)); + cpp_init_builtins (parse_in, flag_hosted); c_cpp_builtins (parse_in); @@ -1377,7 +1407,7 @@ void cb_dir_change (cpp_reader * ARG_UNUSED (pfile), const char *dir) { if (!set_src_pwd (dir)) - warning ("too late for # directive to set debug directory"); + warning (0, "too late for # directive to set debug directory"); } /* Set the C 89 standard (with 1994 amendments if C94, without GNU