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

--- Comment #3 from Michael Meissner <meissner at gcc dot gnu.org> ---
Author: meissner
Date: Mon May 21 22:25:03 2018
New Revision: 260490

URL: https://gcc.gnu.org/viewcvs?rev=260490&root=gcc&view=rev
Log:
2018-05-21  Michael Meissner  <meiss...@linux.ibm.com>

        PR target/85657
        * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
        define __ibm128 as long double.
        * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
        as a distinct type with IEEE 128-bit floating point is supported.
        (init_float128_ieee): Fix up conversions between IFmode and IEEE
        128-bit types to use the correct functions.
        (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
        convert between 128-bit floating point types that have different
        modes but the same representation, instead of using gen_lowpart to
        makean alias.
        * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
        KFmode.
        (IFKF_reg): New attributes to give the register constraints for
        IFmode and KFmode.
        (extend<mode>tf2_internal): New insns to mark an explicit
        conversion between 128-bit floating point types that have a
        different mode but share the same representation.

[gcc/testsuite]
2018-05-21  Michael Meissner  <meiss...@linux.ibm.com>

        PR target/85657
        * gcc.target/powerpc/pr85657-1.c: New test for converting between
        __float128, __ibm128, and long double.
        * gcc.target/powerpc/pr85657-2.c: Likewise.
        * gcc.target/powerpc/pr85657-3.c: Likewise.
        * g++.dg/pr85667.C: New test to make sure __ibm128 is
        implementated as a separate type internally, and is not just an
        alias for long double.


Modified:
    trunk/gcc/ChangeLog

Reply via email to