This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/18967] math.h XSI POSIX namespace (gamma, isnan, scalb)


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

--- Comment #4 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  3bfee8beb8caa939020d942dfa405a3d98975749 (commit)
      from  9f9f27248bf464b465fd4f05112a5b479503e83a (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=3bfee8beb8caa939020d942dfa405a3d98975749

commit 3bfee8beb8caa939020d942dfa405a3d98975749
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Nov 5 00:48:57 2015 +0000

    Make bits/math-finite.h conditions match other headers (bug 19205).

    bits/math-finite.h declares -ffinite-math-only variants of various
    functions under conditions not matching those under which the normal
    versions are declared.

    * math.h only ever includes bits/mathcalls.h to declare float and long
      double functions if __USE_ISOC99, but bits/math-finite.h declares
      some float functions regardless (long double ones are conditioned on
      __MATH_DECLARE_LDOUBLE).  (For C90 functions this isn't a
      conformance bug because C90 reserves the float and long double
      names, but is still contrary to good glibc practice.  For some other
      functions in older XSI standards it *is* a conformance bug.)

    * Some functions are defined as inlines using lgamma_r functions under
      conditions where those lgamma_r functions are not themselves
      declared.

    * hypot is declared under __USE_XOPEN || __USE_ISOC99 in
      bits/mathcalls.h, __USE_ISOC99 only in bits/math-finite.h.

    * float and long double versions of Bessel functions should be limited
      to __USE_MISC (as in bug 18977).

    * gamma should not be declared for __USE_XOPEN2K (as in bug 18967).

    * remainder should be restricted to __USE_XOPEN_EXTENDED ||
      __USE_ISOC99, not unconditional.

    * scalb should not be declared for __USE_XOPEN2K8, and scalbf and
      scalbl are non-POSIX (as in bug 18967).

    This patch fixes all these issues (it doesn't seem worth splitting
    them into separate patches or bugs).  I put __USE_ISOC99 conditionals,
    where needed, around both float and long double declarations, even
    though formally redundant around the long double declarations because
    __MATH_DECLARE_LDOUBLE isn't defined without __USE_ISOC99; it seemed
    clearer that way.  The missing declarations of lgamma_r functions are
    dealt with by directly using declarations of __lgamma*_r_finite, in
    the implementation namespace, rather than having the inlines rely on
    asm redirection of lgamma*_r.

    After this patch, there are some apparently redundant nested
    __USE_ISOC99 conditionals in lgamma / gamma definitions.  These
    actually reflect a separate bug (the correct condition for the lgamma
    inline functions to set signgam is __USE_MISC || __USE_XOPEN, the
    condition under which signgam is declared, rather than disabling
    setting it if __USE_ISOC99, which includes XSI POSIX versions for
    which signgam *should* be set).  They'll be fixed as part of a fix for
    that bug, which will also add tests for these inlines.  I've put a
    note about more general conform/ test coverage for -ffinite-math-only
    on
   
<https://sourceware.org/glibc/wiki/Development_Todo/Master#conformtest_improvements>,
    alongside other options for which this is also relevant (some of which
    have also had such bugs in the past relating to mismatched
    conditionals).

    I also intend to enable the main libm-test.inc tests for the
    math-finite.h functions, but some other bugs in __*_finite need fixing
    first.

        [BZ #19205]
        * math/bits/math-finite.h (acosf): Condition declaration on
        [__USE_ISOC99].
        (acosl): Likewise.
        (acoshf): Likewise.
        (acoshl): Likewise.
        (asinf): Likewise.
        (asinl): Likewise.
        (atan2f): Likewise.
        (atan2l): Likewise.
        (atanhf): Likewise.
        (atanhl): Likewise.
        (coshf): Likewise.
        (coshl): Likewise.
        (expf): Likewise.
        (expl): Likewise.
        (fmodf): Likewise.
        (fmodl): Likewise.
        (hypot): Change condition to [__USE_XOPEN || __USE_ISOC99].
        (j0f): Change condition to [__USE_MISC && __USE_ISOC99].
        (j0l): Likewise.
        (y0f): Likewise.
        (y0l): Likewise.
        (j1f): Likewise.
        (j1l): Likewise.
        (y1f): Likewise.
        (y1l): Likewise.
        (jnf): Likewise.
        (jnl): Likewise.
        (ynf): Likewise.
        (ynl): Likewise.
        (lgammaf_r): Condition declaration on [__USE_ISOC99].
        (lgammal_r): Likewise.
        (__lgamma_r_finite): New declaration.
        (__lgammaf_r_finite): Likewise.
        (__lgammal_r_finite): Likewise.
        (lgamma): Use __lgamma_r_finite.
        (lgammaf): Condition definition on [__USE_ISOC99].  Use
        __lgammaf_r_finite.
        (lgammal): Condition definition on [__USE_ISOC99].  Use
        __lgammal_r_finite.
        (gamma): Do not define for [!__USE_MISC && __USE_XOPEN2K].  Use
        __lgamma_r_finite.
        (gammaf): Condition definition on [__USE_ISOC99].  Use
        __lgammaf_r_finite.
        (gammal): Condition definition on [__USE_ISOC99].  Use
        __lgammal_r_finite.
        (logf): Condition declaration on [__USE_ISOC99].
        (logl): Likewise.
        (log10f): Likewise.
        (log10l): Likewise.
        (ldexpf): Likewise.
        (ldexpl): Likewise.
        (powf): Likewise.
        (powl): Likewise.
        (remainder): Condition declaration on [__USE_XOPEN_EXTENDED ||
        __USE_ISOC99].
        (remainderf): Condition declaration on [__USE_ISOC99].
        (remainderl): Likewise.
        (scalb): Do not declare for [!__USE_MISC && __USE_XOPEN2K8].
        (scalbf): Change condition to [__USE_MISC && __USE_ISOC99].
        (scalbl): Likewise.
        (sinhf): Condition declaration on [__USE_ISOC99].
        (sinhl): Likewise.
        (sqrtf): Likewise.
        (sqrtl): Likewise.

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

Summary of changes:
 ChangeLog               |   69 ++++++++++++++++
 NEWS                    |    2 +-
 math/bits/math-finite.h |  198 ++++++++++++++++++++++++++++++++---------------
 3 files changed, 206 insertions(+), 63 deletions(-)

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]