https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78188

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hubicka at gcc dot gnu.org

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, I can reproduce it with the cross now.  -O2 -fno-exceptions.  I'll try to
reduce.

(gdb) p debug_tree (decl)
 <function_decl 0x2aaaaff46d00 _ZL11vn_valueizeP9tree_node.part.80
    type <function_type 0x2aaaacc873f0

so it's actually a partially inlined clone, not vn_valueize itself.  Likewise
for gimple_ops:

(gdb) p debug_tree (sect->named.decl)
 <function_decl 0x2aaaafdebc00 _ZL10gimple_opsP6gimple.part.20

(gdb) p/x sect->common.flags
$5 = 0x300102
(gdb) p/x flags
$6 = 0x200902

SECTION_DECLARED is missing (doesn't matter) but SECTION_LINKONCE is set which
is what causes the error.  The named section is 'text.unlikely'.

We get that flags from

422       flags = targetm.section_type_flags (decl, name, reloc);
423       return get_section (name, flags, decl);

which in turn gets it from default_section_type_flags which adds
SECTION_LINKONCE because

  if (decl && DECL_P (decl) && DECL_COMDAT_GROUP (decl))
    flags |= SECTION_LINKONCE;

but there is no DECL_COMDAT_GROUP for the gimple_ops function decl.

Note we assign the section name in default_function_section.  So this seems to
be a general issue somehow.  Honza?  How is this situation avoided on other
targets?

Reply via email to