http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56231
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |lto Status|UNCONFIRMED |WAITING Last reconfirmed| |2013-02-07 CC| |rguenth at gcc dot gnu.org, | |tromey at redhat dot com Ever Confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-07 10:52:15 UTC --- Hmm, I'm not sure how the include stack works. I suppose the reason may be that we use 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); } instead of LC_RENAME (but I'm quite positive we can't detect "the #include directive" or "the end of the file" in any meaningful way). Tom, can you shed some light on this? Can we simply always use LC_RENAME? Matt, can you try 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); ?