[Bug lto/67699] ICE (segfault) compiling a const array with -flto
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Sep 24 07:58:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67699
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
#2 0x000000000070544c in symtab_node::get (decl=0x7ffff68d9b40)
at /space/rguenther/src/svn/gcc-5-branch/gcc/cgraph.h:365
365 gcc_checking_assert (TREE_CODE (decl) == FUNCTION_DECL
(gdb) l
360 static inline symtab_node *get (const_tree decl)
361 {
362 #ifdef ENABLE_CHECKING
363 /* Check that we are called for sane type of object - functions
364 and static or external variables. */
365 gcc_checking_assert (TREE_CODE (decl) == FUNCTION_DECL
366 || (TREE_CODE (decl) == VAR_DECL
367 && (TREE_STATIC (decl) || DECL_EXTERNAL
(decl)
368 || in_lto_p)));
(gdb) p debug_tree (decl)
<var_decl 0x7ffff68d9b40 bar
type <array_type 0x7ffff6a405e8
...
readonly decl_1 decl_5 DI file t.ii line 2 col 23 size <integer_cst
0x7ffff68cce58 64> unit size <integer_cst 0x7ffff68cce70 8>
align 32 context <function_decl 0x7ffff6a411b0 foo>>
and we are not in_lto_p (this is cc1plus). And we're coming from (tataa)
940 create_references (encoder, vnode);
941 /* For proper debug info, we need to ship the origins, too. */
942 if (DECL_ABSTRACT_ORIGIN (vnode->decl))
943 {
944 varpool_node *origin_node
945 = varpool_node::get (DECL_ABSTRACT_ORIGIN (vnode->decl));
that's on the GCC 5 branch. ISTR fixing this on trunk - ah, but only for
the early LTO debug work.
Hmm. Let's see if we can survive removing that code - it got added during
GCC 4.9 development. But we never actually stream DECL_ABSTRACT_ORIGIN...
More information about the Gcc-bugs
mailing list