[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 Segher Boessenkool changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Segher Boessenkool --- Fixed everywhere.
[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 --- Comment #5 from Segher Boessenkool --- Author: segher Date: Mon Jul 2 21:25:10 2018 New Revision: 262320 URL: https://gcc.gnu.org/viewcvs?rev=262320=gcc=rev Log: rs6000: Set up ieee128_float_type_node correctly (PR86285) We shouldn't init __ieee128 to be the same as long double if the latter is not even a 128-bit type. This also reorders the nearby __ibm128 code so both types use similar logic. Backport from trunk 2018-06-26 Segher Boessenkool PR target/86285 * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set ieee128_float_type_node to long_double_type_node unless TARGET_LONG_DOUBLE_128 is set. Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/config/rs6000/rs6000.c
[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 Segher Boessenkool changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2018-06-26 Assignee|unassigned at gcc dot gnu.org |segher at gcc dot gnu.org Target Milestone|--- |8.2 Ever confirmed|0 |1 --- Comment #4 from Segher Boessenkool --- Fixed on trunk; needs a backport to 8.
[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 --- Comment #3 from Segher Boessenkool --- Author: segher Date: Tue Jun 26 16:08:30 2018 New Revision: 262156 URL: https://gcc.gnu.org/viewcvs?rev=262156=gcc=rev Log: I typoed the PR numnber, correct is: PR target/86285 * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set ieee128_float_type_node to long_double_type_node unless TARGET_LONG_DOUBLE_128 is set. Modified: trunk/gcc/ChangeLog
[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 --- Comment #2 from Peter Bergner --- When we compile using -mlong-double-64 -mabi=ibmlongdouble, we get what I'd expect: (gdb) ptree type constant 128> unit-size constant 16> align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x758415a8 precision:128>
[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86285 --- Comment #1 from Peter Bergner --- Setting a breakpoint at rs6000_mangle_type(tree type), I'm seeing: (gdb) p type $23 = (const_tree) 0x758413b0 (gdb) ptree type constant 64> unit-size constant 8> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x758413b0 precision:64 pointer_to_this > ...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.