mirror of git://gcc.gnu.org/git/gcc.git
Fix the use of linemap_add and remove unnecessary kludge
libcpp/ * line-map.c (linemap_add): Assert that reason must not be LC_RENAME when called for the first time on a "main input file". c-family/ * c-pch.c (c_common_read_pch): Call linemap_add with LC_ENTER as it's the first time it's being called on this main TU. gcc/lto/ * lto-lang.c (lto_init): Likewise. Also, avoid calling linemap_add twice. gcc/fortran/ * scanner.c (load_file): Don't abuse LC_RENAME reason while (indirectly) calling linemap_add. From-SVN: r178146
This commit is contained in:
parent
e90abaa0a2
commit
892a371f3b
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-08-28 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
|
* c-pch.c (c_common_read_pch): Call linemap_add with LC_ENTER as
|
||||||
|
it's the first time it's being called on this main TU.
|
||||||
|
|
||||||
2011-08-24 Richard Guenther <rguenther@suse.de>
|
2011-08-24 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR c/49396
|
PR c/49396
|
||||||
|
|
|
||||||
|
|
@ -446,7 +446,7 @@ c_common_read_pch (cpp_reader *pfile, const char *name,
|
||||||
fclose (f);
|
fclose (f);
|
||||||
|
|
||||||
line_table->trace_includes = saved_trace_includes;
|
line_table->trace_includes = saved_trace_includes;
|
||||||
linemap_add (line_table, LC_RENAME, 0, saved_loc.file, saved_loc.line);
|
linemap_add (line_table, LC_ENTER, 0, saved_loc.file, saved_loc.line);
|
||||||
|
|
||||||
/* Give the front end a chance to take action after a PCH file has
|
/* Give the front end a chance to take action after a PCH file has
|
||||||
been loaded. */
|
been loaded. */
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-08-28 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
|
* scanner.c (load_file): Don't abuse LC_RENAME reason while
|
||||||
|
(indirectly) calling linemap_add.
|
||||||
|
|
||||||
2011-08-26 Jakub Jelinek <jakub@redhat.com>
|
2011-08-26 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* trans-decl.c (get_proc_pointer_decl): Set DECL_TLS_MODEL
|
* trans-decl.c (get_proc_pointer_decl): Set DECL_TLS_MODEL
|
||||||
|
|
|
||||||
|
|
@ -1887,6 +1887,11 @@ load_file (const char *realfilename, const char *displayedname, bool initial)
|
||||||
int len, line_len;
|
int len, line_len;
|
||||||
bool first_line;
|
bool first_line;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
|
/* If realfilename and displayedname are different and non-null then
|
||||||
|
surely realfilename is the preprocessed form of
|
||||||
|
displayedname. */
|
||||||
|
bool preprocessed_p = (realfilename && displayedname
|
||||||
|
&& strcmp (realfilename, displayedname));
|
||||||
|
|
||||||
filename = displayedname ? displayedname : realfilename;
|
filename = displayedname ? displayedname : realfilename;
|
||||||
|
|
||||||
|
|
@ -1925,9 +1930,24 @@ load_file (const char *realfilename, const char *displayedname, bool initial)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the file. */
|
/* Load the file.
|
||||||
|
|
||||||
f = get_file (filename, initial ? LC_RENAME : LC_ENTER);
|
A "non-initial" file means a file that is being included. In
|
||||||
|
that case we are creating an LC_ENTER map.
|
||||||
|
|
||||||
|
An "initial" file means a main file; one that is not included.
|
||||||
|
That file has already got at least one (surely more) line map(s)
|
||||||
|
created by gfc_init. So the subsequent map created in that case
|
||||||
|
must have LC_RENAME reason.
|
||||||
|
|
||||||
|
This latter case is not true for a preprocessed file. In that
|
||||||
|
case, although the file is "initial", the line maps created by
|
||||||
|
gfc_init was used during the preprocessing of the file. Now that
|
||||||
|
the preprocessing is over and we are being fed the result of that
|
||||||
|
preprocessing, we need to create a brand new line map for the
|
||||||
|
preprocessed file, so the reason is going to be LC_ENTER. */
|
||||||
|
|
||||||
|
f = get_file (filename, (initial && !preprocessed_p) ? LC_RENAME : LC_ENTER);
|
||||||
if (!initial)
|
if (!initial)
|
||||||
add_file_change (f->filename, f->inclusion_line);
|
add_file_change (f->filename, f->inclusion_line);
|
||||||
current_file = f;
|
current_file = f;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-08-28 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
|
* lto-lang.c (lto_init): Likewise. Also, avoid calling
|
||||||
|
linemap_add twice.
|
||||||
|
|
||||||
2011-08-11 Martin Jambor <mjambor@suse.cz>
|
2011-08-11 Martin Jambor <mjambor@suse.cz>
|
||||||
|
|
||||||
* lto.c (uniquify_nodes): Use main variant's BINFO too.
|
* lto.c (uniquify_nodes): Use main variant's BINFO too.
|
||||||
|
|
|
||||||
|
|
@ -1081,8 +1081,7 @@ lto_init (void)
|
||||||
flag_generate_lto = flag_wpa;
|
flag_generate_lto = flag_wpa;
|
||||||
|
|
||||||
/* Initialize libcpp line maps for gcc_assert to work. */
|
/* Initialize libcpp line maps for gcc_assert to work. */
|
||||||
linemap_add (line_table, LC_RENAME, 0, NULL, 0);
|
linemap_add (line_table, LC_ENTER, 0, NULL, 0);
|
||||||
linemap_add (line_table, LC_RENAME, 0, NULL, 0);
|
|
||||||
|
|
||||||
/* Create the basic integer types. */
|
/* Create the basic integer types. */
|
||||||
build_common_tree_nodes (flag_signed_char, /*short_double=*/false);
|
build_common_tree_nodes (flag_signed_char, /*short_double=*/false);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-08-28 Dodji Seketeli <dodji@redhat.com>
|
||||||
|
|
||||||
|
* line-map.c (linemap_add): Assert that reason must not be
|
||||||
|
LC_RENAME when called for the first time on a "main input file".
|
||||||
|
|
||||||
2011-08-22 Gabriel Charette <gchare@google.com>
|
2011-08-22 Gabriel Charette <gchare@google.com>
|
||||||
|
|
||||||
* init.c (cpp_create_reader): Inititalize forced_token_location_p.
|
* init.c (cpp_create_reader): Inititalize forced_token_location_p.
|
||||||
|
|
|
||||||
|
|
@ -114,11 +114,10 @@ linemap_add (struct line_maps *set, enum lc_reason reason,
|
||||||
if (reason == LC_RENAME_VERBATIM)
|
if (reason == LC_RENAME_VERBATIM)
|
||||||
reason = LC_RENAME;
|
reason = LC_RENAME;
|
||||||
|
|
||||||
/* If we don't keep our line maps consistent, we can easily
|
if (set->depth == 0 && reason == LC_RENAME)
|
||||||
segfault. Don't rely on the client to do it for us. */
|
abort ();
|
||||||
if (set->depth == 0)
|
|
||||||
reason = LC_ENTER;
|
if (reason == LC_LEAVE)
|
||||||
else if (reason == LC_LEAVE)
|
|
||||||
{
|
{
|
||||||
struct line_map *from;
|
struct line_map *from;
|
||||||
bool error;
|
bool error;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue