http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56231
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-07 14:35:24 UTC --- (In reply to comment #3) > (In reply to comment #1) > > Index: gcc/lto-streamer-in.c > > =================================================================== > > --- gcc/lto-streamer-in.c (revision 195841) > > +++ gcc/lto-streamer-in.c (working copy) > > @@ -164,13 +164,8 @@ lto_input_location (struct bitpack_d *bp > > data_in->current_col = bp_unpack_var_len_unsigned (bp); > > > > if (file_change) > > - { > > - if (prev_file) > > - linemap_add (line_table, LC_LEAVE, false, NULL, 0); > > - > > - linemap_add (line_table, LC_ENTER, false, data_in->current_file, > > - data_in->current_line); > > - } > > + linemap_add (line_table, LC_RENAME, false, data_in->current_file, > > + data_in->current_line); > > else if (line_change) > > linemap_line_start (line_table, data_in->current_line, > > data_in->current_col); > > Does not work because of > > const struct line_map * > linemap_add (struct line_maps *set, enum lc_reason reason, > unsigned int sysp, const char *to_file, linenum_type to_line) > { > ... > /* When we enter the file for the first time reason cannot be > LC_RENAME. */ > linemap_assert (!(set->depth == 0 && reason == LC_RENAME)); > > trying > > Index: gcc/lto-streamer-in.c > =================================================================== > --- gcc/lto-streamer-in.c (revision 195846) > +++ gcc/lto-streamer-in.c (working copy) > @@ -165,11 +165,12 @@ lto_input_location (struct bitpack_d *bp > > if (file_change) > { > - if (prev_file) > - linemap_add (line_table, LC_LEAVE, false, NULL, 0); > - > - linemap_add (line_table, LC_ENTER, false, data_in->current_file, > - data_in->current_line); > + if (!prev_file) > + linemap_add (line_table, LC_ENTER, false, data_in->current_file, > + data_in->current_line); > + else > + linemap_add (line_table, LC_RENAME, false, data_in->current_file, > + data_in->current_line); > } > else if (line_change) > linemap_line_start (line_table, data_in->current_line, > data_in->current_col); > > we'll still eventually enter a file multiple times that way. But let's see > if it makes a difference... Doesn't make a difference.