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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
>From my side, I think best would be just to partially revert
r9-1033-gc765c8cb73b0bb91e9f0401ab6567b6218b910e5
(all the rs6000_passes_ieee128 and ieee128_mangling_gcc_8_1 related stuff in
there, don't set those and when testing assume false).
Rationale, -mabi=ieeelongdouble has been an undocumented unsupported option
before GCC 8, it is true it was "supported" option in 8.1, but still far from
being fully usable both because of the missing libstdc++ support and important
bugfixes.  And in 8.2 the ABI we have now has been backported -
r8-8265-gd8f96ab114a977d9 .  So, we are taking a lot of pain for compatibility
with something that likely nobody used, glibc support wasn't there until the
2.32 release done after 8.2 was released.

If not and we do want the pain, then all the mangling has to be done before
free_lang_data (so can't be driven by rs6000_passes_ieee128 which is RTL-ish
time, but on whether u9__ieee128 has been emitted into the mangled name),
ideally through a target hook in mangle_decl where it also does the
          record_mangling (decl, G.need_abi_warning);

          if (!G.need_abi_warning)
            return;

          flag_abi_version = flag_abi_compat_version;
          id2 = mangle_decl_string (decl);
          id2 = targetm.mangle_decl_assembler_name (decl, id2);
          flag_abi_version = save_ver;

          if (id2 != id)
            note_mangling_alias (decl, id2);
stuff (perhaps right before that if (!G.need_abi_warning) spot).

Note, some Fedora packages fail with weirdo errors like:
{standard input}: Assembler messages:
{standard input}:43720: Error: junk at end of line, first unrecognized
character is `['
{standard input}:43721: Error: expected comma after "operator"
{standard input}:45644: Error: junk at end of line, first unrecognized
character is `.'
{standard input}:45645: Error: expected comma after "__ct_base"
{standard input}:46051: Error: junk at end of line, first unrecognized
character is `.'
{standard input}:46052: Error: expected comma after "__ct_base"
{standard input}:46794: Error: junk at end of line, first unrecognized
character is `.'
{standard input}:46795: Error: expected comma after "__ct_base"
{standard input}:48803: Error: junk at end of line, first unrecognized
character is `='
{standard input}:48804: Error: expected comma after "operator"
{standard input}:49232: Error: junk at end of line, first unrecognized
character is `.'
{standard input}:49233: Error: expected comma after "__ct_base"
and I strongly believe it is the same thing, lto1 and the identifier being
mangled in a weirdo way.

Reply via email to