This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/65536] LTO line number information garbled
- From: "marxin at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 25 Mar 2015 09:02:09 +0000
- Subject: [Bug lto/65536] LTO line number information garbled
- Auto-submitted: auto-generated
- References: <bug-65536-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65536
--- Comment #28 from Martin LiÅka <marxin at gcc dot gnu.org> ---
(In reply to Jan Hubicka from comment #26)
> Created attachment 35130 [details]
> linemap
>
> this is a proof of concept patch that makes streamer in to collect locations
> into a "cache" and apply them in sorted order (looking up correct max_column
> hints) at the end of handling of a given section. It also has facility to
> throw away locations of trees that are freed.
> while sorting at stream in time is not cool, it does not show top in the
> profiles
> and memory use of the cache is actually dominated by other stuff we read,
> so this seems to work quite well in practice. Main problem would be if
> someone
> copied/used the locator before cache is applied.
>
> This helps to get all lines and most of carrets right on firefox. I killed my
> Chromium tree so can't test it there (Martin, perhaps you could try?)
Sure.
Unfortunately, there's still ICE, which is caused by a function body load that
happens in IPA ICF:
In function âCreateâ:
lto1: internal compiler error: Segmentation fault
0x9037df crash_signal
../../gcc/toplev.c:383
0xed909c new_linemap
../../libcpp/line-map.c:265
0xed9467 linemap_add(line_maps*, lc_reason, unsigned int, char const*, unsigned
int)
../../libcpp/line-map.c:314
0xed98d0 linemap_line_start(line_maps*, unsigned int, unsigned int)
../../libcpp/line-map.c:566
0xa8b190 unpack_ts_block_value_fields
../../gcc/tree-streamer-in.c:414
0xa8b190 streamer_read_tree_bitfields(lto_input_block*, data_in*, tree_node*)
../../gcc/tree-streamer-in.c:538
0x80a791 lto_read_tree_1
../../gcc/lto-streamer-in.c:1197
0x80ab04 lto_read_tree
../../gcc/lto-streamer-in.c:1234
0x80ab04 lto_input_tree_1(lto_input_block*, data_in*, LTO_tags, unsigned int)
../../gcc/lto-streamer-in.c:1353
0x80ae01 lto_input_scc(lto_input_block*, data_in*, unsigned int*, unsigned
int*)
../../gcc/lto-streamer-in.c:1258
0x80ae64 lto_input_tree(lto_input_block*, data_in*)
../../gcc/lto-streamer-in.c:1368
0xe26ff1 input_gimple_stmt
../../gcc/gimple-streamer-in.c:186
0xe26ff1 input_bb(lto_input_block*, LTO_tags, data_in*, function*, int)
../../gcc/gimple-streamer-in.c:303
0x80c457 input_function
../../gcc/lto-streamer-in.c:992
0x80c457 lto_read_body_or_constructor
../../gcc/lto-streamer-in.c:1129
0x614d5d cgraph_node::get_untransformed_body()
../../gcc/cgraph.c:3225
0xe6e580 ipa_icf::sem_function::init()
../../gcc/ipa-icf.c:1167
0xe6b730 ipa_icf::sem_item_optimizer::parse_nonsingleton_classes()
../../gcc/ipa-icf.c:2617
0xe72b9a ipa_icf::sem_item_optimizer::execute()
../../gcc/ipa-icf.c:2419
0xe74386 ipa_icf_driver
../../gcc/ipa-icf.c:3304
I also attach ODR warnings before and after the patch.
Diff
>
> I did not have much time today to test the patch. It also saves quite a lot
> of
> memory, about 400MB on firefox I guess.
>
> Honza