[Bug target/86285] We don't mangle __ieee128 correctly using -mlong-double-64 -mabi=ieeelongdouble

2018-07-03 Thread segher at gcc dot gnu.org
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

2018-07-02 Thread segher at gcc dot gnu.org
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

2018-06-26 Thread segher at gcc dot gnu.org
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

2018-06-26 Thread segher at gcc dot gnu.org
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

2018-06-22 Thread bergner at gcc dot gnu.org
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

2018-06-22 Thread bergner at gcc dot gnu.org
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.