mirror of git://gcc.gnu.org/git/gcc.git
[6/6] Preprocessor forced macro location
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02044.html libcpp/ * internal.h (struct cpp_reader): Rename forced_token_location_p to forced_token_location and drop its pointerness. * include/cpplib.h (cpp_force_token_locations): Take location, not pointer to one. * init.c (cpp_create_reader): Adjust. * lex.c (cpp_read_main_file): gcc/c-family/ * c-opts.c (c_finish_options): Adjust cpp_force_token_locations call. gcc/fortran/ * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. From-SVN: r265692
This commit is contained in:
parent
82a14443db
commit
f3f6029db2
|
|
@ -1,3 +1,7 @@
|
||||||
|
2018-10-31 Nathan Sidwell <nathan@acm.org>
|
||||||
|
|
||||||
|
* c-opts.c (c_finish_options): Adjust cpp_force_token_locations call.
|
||||||
|
|
||||||
2018-10-30 Martin Sebor <msebor@redhat.com>
|
2018-10-30 Martin Sebor <msebor@redhat.com>
|
||||||
|
|
||||||
PR middle-end/87041
|
PR middle-end/87041
|
||||||
|
|
|
||||||
|
|
@ -1396,8 +1396,7 @@ c_finish_options (void)
|
||||||
0)));
|
0)));
|
||||||
/* Make sure all of the builtins about to be declared have
|
/* Make sure all of the builtins about to be declared have
|
||||||
BUILTINS_LOCATION has their source_location. */
|
BUILTINS_LOCATION has their source_location. */
|
||||||
source_location builtins_loc = BUILTINS_LOCATION;
|
cpp_force_token_locations (parse_in, BUILTINS_LOCATION);
|
||||||
cpp_force_token_locations (parse_in, &builtins_loc);
|
|
||||||
|
|
||||||
cpp_init_builtins (parse_in, flag_hosted);
|
cpp_init_builtins (parse_in, flag_hosted);
|
||||||
c_cpp_builtins (parse_in);
|
c_cpp_builtins (parse_in);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
|
2018-10-31 Nathan Sidwell <nathan@acm.org>
|
||||||
|
|
||||||
|
* cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call.
|
||||||
|
|
||||||
2018-10-31 Martin Liska <mliska@suse.cz>
|
2018-10-31 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
* trans-decl.c (struct module_hasher): Call htab_hash_string
|
* trans-decl.c (struct module_hasher): Call htab_hash_string
|
||||||
|
|
|
||||||
|
|
@ -579,8 +579,7 @@ gfc_cpp_init (void)
|
||||||
{
|
{
|
||||||
/* Make sure all of the builtins about to be declared have
|
/* Make sure all of the builtins about to be declared have
|
||||||
BUILTINS_LOCATION has their source_location. */
|
BUILTINS_LOCATION has their source_location. */
|
||||||
source_location builtins_loc = BUILTINS_LOCATION;
|
cpp_force_token_locations (cpp_in, BUILTINS_LOCATION);
|
||||||
cpp_force_token_locations (cpp_in, &builtins_loc);
|
|
||||||
|
|
||||||
cpp_define_builtins (cpp_in);
|
cpp_define_builtins (cpp_in);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
2018-10-31 Nathan Sidwell <nathan@acm.org>
|
2018-10-31 Nathan Sidwell <nathan@acm.org>
|
||||||
|
|
||||||
|
* internal.h (struct cpp_reader): Rename forced_token_location_p
|
||||||
|
to forced_token_location and drop its pointerness.
|
||||||
|
* include/cpplib.h (cpp_force_token_locations): Take location, not
|
||||||
|
pointer to one.
|
||||||
|
* init.c (cpp_create_reader): Adjust.
|
||||||
|
* lex.c (cpp_read_main_file):
|
||||||
|
|
||||||
* directives.c (do_include_common): Commonize cleanup path.
|
* directives.c (do_include_common): Commonize cleanup path.
|
||||||
(_cpp_pop_buffer): Fix leak.
|
(_cpp_pop_buffer): Fix leak.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1281,7 +1281,7 @@ extern int cpp_read_state (cpp_reader *, const char *, FILE *,
|
||||||
struct save_macro_data *);
|
struct save_macro_data *);
|
||||||
|
|
||||||
/* In lex.c */
|
/* In lex.c */
|
||||||
extern void cpp_force_token_locations (cpp_reader *, source_location *);
|
extern void cpp_force_token_locations (cpp_reader *, source_location);
|
||||||
extern void cpp_stop_forcing_token_locations (cpp_reader *);
|
extern void cpp_stop_forcing_token_locations (cpp_reader *);
|
||||||
|
|
||||||
/* In expr.c */
|
/* In expr.c */
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ cpp_create_reader (enum c_lang lang, cpp_hash_table *table,
|
||||||
pfile->pushed_macros = 0;
|
pfile->pushed_macros = 0;
|
||||||
|
|
||||||
/* Do not force token locations by default. */
|
/* Do not force token locations by default. */
|
||||||
pfile->forced_token_location_p = NULL;
|
pfile->forced_token_location = 0;
|
||||||
|
|
||||||
/* Initialize source_date_epoch to -2 (not yet set). */
|
/* Initialize source_date_epoch to -2 (not yet set). */
|
||||||
pfile->source_date_epoch = (time_t) -2;
|
pfile->source_date_epoch = (time_t) -2;
|
||||||
|
|
|
||||||
|
|
@ -570,9 +570,9 @@ struct cpp_reader
|
||||||
/* List of saved macros by push_macro. */
|
/* List of saved macros by push_macro. */
|
||||||
struct def_pragma_macro *pushed_macros;
|
struct def_pragma_macro *pushed_macros;
|
||||||
|
|
||||||
/* If non-null, the lexer will use this location for the next token
|
/* If non-zero, the lexer will use this location for the next token
|
||||||
instead of getting a location from the linemap. */
|
instead of getting a location from the linemap. */
|
||||||
source_location *forced_token_location_p;
|
source_location forced_token_location;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Character classes. Based on the more primitive macros in safe-ctype.h.
|
/* Character classes. Based on the more primitive macros in safe-ctype.h.
|
||||||
|
|
|
||||||
14
libcpp/lex.c
14
libcpp/lex.c
|
|
@ -2757,8 +2757,8 @@ _cpp_lex_direct (cpp_reader *pfile)
|
||||||
}
|
}
|
||||||
c = *buffer->cur++;
|
c = *buffer->cur++;
|
||||||
|
|
||||||
if (pfile->forced_token_location_p)
|
if (pfile->forced_token_location)
|
||||||
result->src_loc = *pfile->forced_token_location_p;
|
result->src_loc = pfile->forced_token_location;
|
||||||
else
|
else
|
||||||
result->src_loc = linemap_position_for_column (pfile->line_table,
|
result->src_loc = linemap_position_for_column (pfile->line_table,
|
||||||
CPP_BUF_COLUMN (buffer, buffer->cur));
|
CPP_BUF_COLUMN (buffer, buffer->cur));
|
||||||
|
|
@ -3773,14 +3773,14 @@ cpp_token_val_index (const cpp_token *tok)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All tokens lexed in R after calling this function will be forced to have
|
/* All tokens lexed in R after calling this function will be forced to
|
||||||
their source_location the same as the location referenced by P, until
|
have their source_location to be P, until
|
||||||
cpp_stop_forcing_token_locations is called for R. */
|
cpp_stop_forcing_token_locations is called for R. */
|
||||||
|
|
||||||
void
|
void
|
||||||
cpp_force_token_locations (cpp_reader *r, source_location *p)
|
cpp_force_token_locations (cpp_reader *r, source_location loc)
|
||||||
{
|
{
|
||||||
r->forced_token_location_p = p;
|
r->forced_token_location = loc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go back to assigning locations naturally for lexed tokens. */
|
/* Go back to assigning locations naturally for lexed tokens. */
|
||||||
|
|
@ -3788,5 +3788,5 @@ cpp_force_token_locations (cpp_reader *r, source_location *p)
|
||||||
void
|
void
|
||||||
cpp_stop_forcing_token_locations (cpp_reader *r)
|
cpp_stop_forcing_token_locations (cpp_reader *r)
|
||||||
{
|
{
|
||||||
r->forced_token_location_p = NULL;
|
r->forced_token_location = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue