diff options
author | Nathan Sidwell <nathan@acm.org> | 2018-10-31 17:12:27 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2018-10-31 17:12:27 +0000 |
commit | ab5324fb68852510f9b208894cf6c2716e129d77 (patch) | |
tree | d56a7a480cd55650dba5af8453f062eb9c2fa253 /gcc | |
parent | 22e052725189a472e4e86ebb6595278a49f4bcdd (diff) | |
download | gcc-ab5324fb68852510f9b208894cf6c2716e129d77.zip gcc-ab5324fb68852510f9b208894cf6c2716e129d77.tar.gz gcc-ab5324fb68852510f9b208894cf6c2716e129d77.tar.bz2 |
[PATCH] command line macros
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02062.html
* c-opts.c (c_finish_options): Force command line macro
location. Refactor to avoid repeating main debug hook.
(push_command_line_include): Clarify comment.
From-SVN: r265696
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/c-family/c-opts.c | 72 |
2 files changed, 37 insertions, 39 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 290e3fa..a3ab8e8 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,5 +1,9 @@ 2018-10-31 Nathan Sidwell <nathan@acm.org> + * c-opts.c (c_finish_options): Force command line macro + location. Refactor to avoid repeating main debug hook. + (push_command_line_include): Clarify comment. + * c-opts.c (c_finish_options): Adjust cpp_force_token_locations call. 2018-10-30 Martin Sebor <msebor@redhat.com> diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index 4592682..fe4d1ff 100644 --- a/gcc/c-family/c-opts.c +++ b/gcc/c-family/c-opts.c @@ -1387,13 +1387,11 @@ c_finish_options (void) { if (!cpp_opts->preprocessed) { - size_t i; + const line_map_ordinary *bltin_map + = linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0, + _("<built-in>"), 0)); + cb_file_change (parse_in, bltin_map); - cb_file_change (parse_in, - linemap_check_ordinary (linemap_add (line_table, - LC_RENAME, 0, - _("<built-in>"), - 0))); /* Make sure all of the builtins about to be declared have BUILTINS_LOCATION has their source_location. */ cpp_force_token_locations (parse_in, BUILTINS_LOCATION); @@ -1401,8 +1399,6 @@ c_finish_options (void) cpp_init_builtins (parse_in, flag_hosted); c_cpp_builtins (parse_in); - cpp_stop_forcing_token_locations (parse_in); - /* We're about to send user input to cpplib, so make it warn for things that we previously (when we sent it internal definitions) told it to not warn. @@ -1414,11 +1410,14 @@ c_finish_options (void) their acceptance on the -std= setting. */ cpp_opts->warn_dollars = (cpp_opts->cpp_pedantic && !cpp_opts->c99); - cb_file_change (parse_in, - linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0, - _("<command-line>"), 0))); + const line_map_ordinary *cmd_map + = linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0, + _("<command-line>"), 0)); + cb_file_change (parse_in, cmd_map); - for (i = 0; i < deferred_count; i++) + /* All command line defines must have the same location. */ + cpp_force_token_locations (parse_in, cmd_map->start_location); + for (size_t i = 0; i < deferred_count; i++) { struct deferred_opt *opt = &deferred_opts[i]; @@ -1435,35 +1434,30 @@ c_finish_options (void) } } - /* Start the main input file, if the debug writer wants it. */ - if (debug_hooks->start_end_main_source_file - && !flag_preprocess_only) - (*debug_hooks->start_source_file) (0, this_input_filename); + cpp_stop_forcing_token_locations (parse_in); + } + else if (cpp_opts->directives_only) + cpp_init_special_builtins (parse_in); - /* Handle -imacros after -D and -U. */ - for (i = 0; i < deferred_count; i++) - { - struct deferred_opt *opt = &deferred_opts[i]; + /* Start the main input file, if the debug writer wants it. */ + if (debug_hooks->start_end_main_source_file + && !flag_preprocess_only) + (*debug_hooks->start_source_file) (0, this_input_filename); - if (opt->code == OPT_imacros - && cpp_push_include (parse_in, opt->arg)) - { - /* Disable push_command_line_include callback for now. */ - include_cursor = deferred_count + 1; - cpp_scan_nooutput (parse_in); - } - } - } - else - { - if (cpp_opts->directives_only) - cpp_init_special_builtins (parse_in); + if (!cpp_opts->preprocessed) + /* Handle -imacros after -D and -U. */ + for (size_t i = 0; i < deferred_count; i++) + { + struct deferred_opt *opt = &deferred_opts[i]; - /* Start the main input file, if the debug writer wants it. */ - if (debug_hooks->start_end_main_source_file - && !flag_preprocess_only) - (*debug_hooks->start_source_file) (0, this_input_filename); - } + if (opt->code == OPT_imacros + && cpp_push_include (parse_in, opt->arg)) + { + /* Disable push_command_line_include callback for now. */ + include_cursor = deferred_count + 1; + cpp_scan_nooutput (parse_in); + } + } include_cursor = 0; push_command_line_include (); @@ -1506,7 +1500,7 @@ push_command_line_include (void) include_cursor++; /* -Wunused-macros should only warn about macros defined hereafter. */ cpp_opts->warn_unused_macros = cpp_warn_unused_macros; - /* Restore the line map from <command line>. */ + /* Restore the line map back to the main file. */ if (!cpp_opts->preprocessed) cpp_change_file (parse_in, LC_RENAME, this_input_filename); |