aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2018-10-31 17:12:27 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2018-10-31 17:12:27 +0000
commitab5324fb68852510f9b208894cf6c2716e129d77 (patch)
treed56a7a480cd55650dba5af8453f062eb9c2fa253 /gcc
parent22e052725189a472e4e86ebb6595278a49f4bcdd (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/c-family/c-opts.c72
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);