public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla@sourceware.org>
To: glibc-bugs@sourceware.org
Subject: [Bug math/887] Math library function "logb" and "nextafter" inconsistent
Date: Mon, 05 Oct 2015 17:48:00 -0000	[thread overview]
Message-ID: <bug-887-131-ok4ouPEJQx@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-887-131@http.sourceware.org/bugzilla/>

https://sourceware.org/bugzilla/show_bug.cgi?id=887

--- Comment #33 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  bc3753638a1c3c93dea071414909ce2729e3ca50 (commit)
      from  57352c2201678ee52e7e8ea6fb6e115a9ec4e711 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=bc3753638a1c3c93dea071414909ce2729e3ca50

commit bc3753638a1c3c93dea071414909ce2729e3ca50
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Mon Oct 5 17:46:50 2015 +0000

    Work around powerpc32 integer 0 converting to -0 (bug 887, bug 19049, bug
19050).

    On powerpc32 hard-float, older processors (ones where fcfid is not
    available for 32-bit code), GCC generates conversions from integers to
    floating point that wrongly convert integer 0 to -0 instead of +0 in
    FE_DOWNWARD mode.  This in turn results in logb and a few other
    functions wrongly returning -0 when they should return +0.

    This patch works around this issue in glibc as I proposed in
    <https://sourceware.org/ml/libc-alpha/2015-09/msg00728.html>, so that
    the affected functions can be correct and the affected tests pass in
    the absence of a GCC fix for this longstanding issue (GCC bug 67771 -
    if fixed, of course we can put in GCC version conditionals, and
    eventually phase out the workarounds).  A new macro
    FIX_INT_FP_CONVERT_ZERO is added in a new sysdeps header
    fix-int-fp-convert-zero.h, and the powerpc32/fpu version of that
    header defines the macro based on the results of a configure test for
    whether such conversions use the fcfid instruction.

    Tested for x86_64 (that installed stripped shared libraries are
    unchanged by the patch) and powerpc (that HAVE_PPC_FCFID comes out to
    0 as expected and that the relevant tests are fixed).  Also tested a
    build with GCC configured for -mcpu=power4 and verified that
    HAVE_PPC_FCFID comes out to 1 in that case.

    There are still some other issues to fix to get test-float and
    test-double passing cleanly for older powerpc32 processors (apart from
    the need for an ulps regeneration for powerpc).  (test-ldouble will be
    harder to get passing cleanly, but with a combination of selected
    fixes to ldbl-128ibm code that don't involve significant performance
    issues, allowing spurious underflow and inexact exceptions for that
    format, and lots of XFAILing for the default case of unpatched libgcc,
    it should be doable.)

        [BZ #887]
        [BZ #19049]
        [BZ #19050]
        * sysdeps/generic/fix-int-fp-convert-zero.h: New file.
        * sysdeps/ieee754/dbl-64/e_log10.c: Include
        <fix-int-fp-convert-zero.h>.
        (__ieee754_log10): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/dbl-64/e_log2.c: Include
        <fix-int-fp-convert-zero.h>.
        (__ieee754_log2): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/dbl-64/s_erf.c: Include
        <fix-int-fp-convert-zero.h>.
        (__erfc): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/dbl-64/s_logb.c: Include
        <fix-int-fp-convert-zero.h>.
        (__logb): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/flt-32/e_log10f.c: Include
        <fix-int-fp-convert-zero.h>.
        (__ieee754_log10f): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/flt-32/e_log2f.c: Include
        <fix-int-fp-convert-zero.h>.
        (__ieee754_log2f): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/flt-32/s_erff.c: Include
        <fix-int-fp-convert-zero.h>.
        (__erfcf): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/flt-32/s_logbf.c: Include
        <fix-int-fp-convert-zero.h>.
        (__logbf): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/ldbl-128ibm/s_erfl.c: Include
        <fix-int-fp-convert-zero.h>.
        (__erfcl): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/ieee754/ldbl-128ibm/s_logbl.c: Include
        <fix-int-fp-convert-zero.h>.
        (__logbl): Adjust signs as needed if FIX_INT_FP_CONVERT_ZERO.
        * sysdeps/powerpc/powerpc32/fpu/configure.ac: New file.
        * sysdeps/powerpc/powerpc32/fpu/configure: New generated file.
        * sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h: New
        file.
        * config.h.in [_LIBC] (HAVE_PPC_FCFID): New macro.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   42 ++++++++++++++++++++
 NEWS                                               |   18 ++++----
 config.h.in                                        |    3 +
 sysdeps/generic/fix-int-fp-convert-zero.h          |   27 +++++++++++++
 sysdeps/ieee754/dbl-64/e_log10.c                   |    3 +
 sysdeps/ieee754/dbl-64/e_log2.c                    |    7 +++-
 sysdeps/ieee754/dbl-64/s_erf.c                     |    6 ++-
 sysdeps/ieee754/dbl-64/s_logb.c                    |    3 +
 sysdeps/ieee754/flt-32/e_log10f.c                  |    3 +
 sysdeps/ieee754/flt-32/e_log2f.c                   |    8 +++-
 sysdeps/ieee754/flt-32/s_erff.c                    |    6 ++-
 sysdeps/ieee754/flt-32/s_logbf.c                   |    3 +
 sysdeps/ieee754/ldbl-128ibm/s_erfl.c               |    6 ++-
 sysdeps/ieee754/ldbl-128ibm/s_logbl.c              |    3 +
 sysdeps/powerpc/powerpc32/fpu/configure            |   29 +++++++++++++
 sysdeps/powerpc/powerpc32/fpu/configure.ac         |   18 ++++++++
 .../powerpc32/fpu/fix-int-fp-convert-zero.h        |   28 +++++++++++++
 17 files changed, 199 insertions(+), 14 deletions(-)
 create mode 100644 sysdeps/generic/fix-int-fp-convert-zero.h
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/configure
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/configure.ac
 create mode 100644 sysdeps/powerpc/powerpc32/fpu/fix-int-fp-convert-zero.h

-- 
You are receiving this mail because:
You are on the CC list for the bug.


  parent reply	other threads:[~2015-10-05 17:48 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-887-131@http.sourceware.org/bugzilla/>
2012-02-22 21:44 ` jsm28 at gcc dot gnu.org
2012-02-23 19:49 ` rsa at us dot ibm.com
2012-02-23 21:29 ` rsa at us dot ibm.com
2012-02-23 21:39 ` joseph at codesourcery dot com
2012-02-23 21:44 ` rsa at us dot ibm.com
2012-02-23 23:18 ` rsa at us dot ibm.com
2012-02-29 16:22 ` rsa at us dot ibm.com
2012-02-29 16:23 ` rsa at us dot ibm.com
2012-03-01 21:26 ` rsa at us dot ibm.com
2012-03-26 19:34 ` rsa at us dot ibm.com
2012-03-26 20:43 ` rsa at us dot ibm.com
2012-03-26 20:51 ` joseph at codesourcery dot com
2012-03-26 20:56 ` rsa at us dot ibm.com
2012-03-26 20:57 ` rsa at us dot ibm.com
2012-03-26 22:23 ` rsa at us dot ibm.com
2012-04-25 22:01 ` rsa at us dot ibm.com
2012-04-26 18:16 ` rsa at us dot ibm.com
2012-04-26 18:53 ` joseph at codesourcery dot com
2012-04-26 19:04 ` rsa at us dot ibm.com
2012-04-27 16:31 ` rsa at us dot ibm.com
2014-01-07 22:43 ` cvs-commit at gcc dot gnu.org
2015-10-01 21:50 ` jsm28 at gcc dot gnu.org
2015-10-01 21:51 ` jsm28 at gcc dot gnu.org
2015-10-05 17:48 ` cvs-commit at gcc dot gnu.org [this message]
2015-10-05 17:50 ` cvs-commit at gcc dot gnu.org
2015-10-05 17:51 ` jsm28 at gcc dot gnu.org
2005-04-28 17:50 [Bug math/887] New: " uttamp at us dot ibm dot com
2005-04-29 20:38 ` [Bug math/887] " uttamp at us dot ibm dot com
2005-06-16 19:12 ` uttamp at us dot ibm dot com
2005-07-19 22:16 ` uttamp at us dot ibm dot com
2005-10-25 17:05 ` uttamp at us dot ibm dot com
2005-11-02  1:29 ` uttamp at us dot ibm dot com
2005-11-21 17:57 ` uttamp at us dot ibm dot com
2005-11-21 18:07 ` jakub at redhat dot com
2006-09-30  5:03 ` rsa at us dot ibm dot com
2006-09-30  5:54 ` rsa at us dot ibm dot com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-887-131-ok4ouPEJQx@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=glibc-bugs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).