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.