https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285
--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> --- Setting a breakpoint at rs6000_mangle_type(tree type), I'm seeing: (gdb) p type $23 = (const_tree) 0x7ffff58413b0 (gdb) ptree type <real_type 0x7ffff58413b0 long double DF size <integer_cst 0x7ffff5741110 type <integer_type 0x7ffff58400a8 bitsizetype> constant 64> unit-size <integer_cst 0x7ffff5741128 type <integer_type 0x7ffff5840000 sizetype> constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff58413b0 precision:64 pointer_to_this <pointer_type 0x7ffff58418f0>> ...so somehow the __ieee128 is being changed into a long double and since we said long double is 64-bits (ie, double), we have: (gdb) p TYPE_MODE(type) $24 = E_DFmode which causes us to return NULL and we get the default mangling 'e' for long double.