[PATCH] Fix LTO -g ICE (PR lto/65012)
Jakub Jelinek
jakub@redhat.com
Thu Feb 19 12:19:00 GMT 2015
Hi!
When building systemd with LTO and -g, we ICE, because we stream in
__PRETTY_FUNCTION__ VAR_DECL, which isn't referenced in the IL except for
BLOCK_VARS and thus doesn't get a varpool node streamed with it.
Later on when dwarf2out.c calls make_decl_rtl_for_debug on it, it creates
the varpool_node, but it has of course NULL lto_file_data, but
get_constructor assumes it isn't NULL.
Fixed thusly, bootstrapped/regtested on x86_64-linux, i686-linux and
aarch64-linux, tested it fixes systemd LTO -g build.
Acked by Honza privately on IRC, committed to trunk.
2015-02-19 Jakub Jelinek <jakub@redhat.com>
PR lto/65012
* varpool.c (varpool_node::get_constructor): Return early
if this->lto_file_data is NULL.
--- gcc/varpool.c.jj 2015-02-16 11:19:05.000000000 +0100
+++ gcc/varpool.c 2015-02-18 19:57:10.743001889 +0100
@@ -303,7 +303,8 @@ varpool_node::get_constructor (void)
size_t len;
if (DECL_INITIAL (decl) != error_mark_node
- || !in_lto_p)
+ || !in_lto_p
+ || !lto_file_data)
return DECL_INITIAL (decl);
timevar_push (TV_IPA_LTO_CTORS_IN);
Jakub
More information about the Gcc-patches
mailing list