From c0c3c409a78fa6a51d517ce63473ab1e84a4727d Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Mon, 29 Dec 2008 20:10:00 +0000 Subject: re PR fortran/31832 (FAIL: gfortran.dg/integer_exponentiation_2.f90 at -O1 and above) PR fortran/31832 * acinclude.m4 (LIBGFOR_CHECK_FOR_BROKEN_POWF): New autoconf check for broken powf. * configure.ac (LIBGFOR_CHECK_FOR_BROKEN_POWF): Use it. * intrinsics/c99_functions.c: Use internal powf implementation if HAVE_BROKEN_POWF is defined. * configure: Rebuilt. * config.h.in: Rebuilt. From-SVN: r142952 --- libgfortran/ChangeLog | 11 +++++++++++ libgfortran/acinclude.m4 | 12 ++++++++++++ libgfortran/config.h.in | 3 +++ libgfortran/configure | 24 ++++++++++++++++++++++++ libgfortran/configure.ac | 3 +++ libgfortran/intrinsics/c99_functions.c | 2 ++ 6 files changed, 55 insertions(+) (limited to 'libgfortran') diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c04331f..aca6e93 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,14 @@ +2008-12-29 John David Anglin + + PR fortran/31832 + * acinclude.m4 (LIBGFOR_CHECK_FOR_BROKEN_POWF): New autoconf check for + broken powf. + * configure.ac (LIBGFOR_CHECK_FOR_BROKEN_POWF): Use it. + * intrinsics/c99_functions.c: Use internal powf implementation if + HAVE_BROKEN_POWF is defined. + * configure: Rebuilt. + * config.h.in: Rebuilt. + 2008-12-22 Jerry DeLisle PR libfortran/37472 diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4 index 9f8ae54..3355287 100644 --- a/libgfortran/acinclude.m4 +++ b/libgfortran/acinclude.m4 @@ -376,3 +376,15 @@ __mingw_snprintf (NULL, 0, "%d\n", 1); AC_DEFINE(HAVE_MINGW_SNPRINTF, 1, [Define if you have __mingw_snprintf.]) fi ]) + +dnl Check whether we have a broken powf implementation +AC_DEFUN([LIBGFOR_CHECK_FOR_BROKEN_POWF], [ + AC_CACHE_CHECK([whether powf is broken], libgfor_cv_have_broken_powf, [ +case "${target}" in + hppa*64*-*-hpux*) libgfor_cv_have_broken_powf=yes ;; + *) libgfor_cv_have_broken_powf=no;; +esac]) + if test x"$libgfor_cv_have_broken_powf" = xyes; then + AC_DEFINE(HAVE_BROKEN_POWF, 1, [Define if powf is broken.]) + fi +]) diff --git a/libgfortran/config.h.in b/libgfortran/config.h.in index 1f291a4..3542638 100644 --- a/libgfortran/config.h.in +++ b/libgfortran/config.h.in @@ -96,6 +96,9 @@ /* Define if isnan is broken. */ #undef HAVE_BROKEN_ISNAN +/* Define if powf is broken. */ +#undef HAVE_BROKEN_POWF + /* libm includes cabs */ #undef HAVE_CABS diff --git a/libgfortran/configure b/libgfortran/configure index 14dda45..2d12f96 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -33243,6 +33243,30 @@ _ACEOF fi +# Check for a broken powf implementation + + echo "$as_me:$LINENO: checking whether powf is broken" >&5 +echo $ECHO_N "checking whether powf is broken... $ECHO_C" >&6 +if test "${libgfor_cv_have_broken_powf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${target}" in + hppa*64*-*-hpux*) libgfor_cv_have_broken_powf=yes ;; + *) libgfor_cv_have_broken_powf=no;; +esac +fi +echo "$as_me:$LINENO: result: $libgfor_cv_have_broken_powf" >&5 +echo "${ECHO_T}$libgfor_cv_have_broken_powf" >&6 + if test x"$libgfor_cv_have_broken_powf" = xyes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_BROKEN_POWF 1 +_ACEOF + + fi + + # Check for GNU libc feenableexcept echo "$as_me:$LINENO: checking for feenableexcept in -lm" >&5 echo $ECHO_N "checking for feenableexcept in -lm... $ECHO_C" >&6 diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac index 47d453a..0e0b5a7 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac @@ -405,6 +405,9 @@ LIBGFOR_CHECK_WORKING_STAT # Check whether __mingw_snprintf() is present LIBGFOR_CHECK_MINGW_SNPRINTF +# Check for a broken powf implementation +LIBGFOR_CHECK_FOR_BROKEN_POWF + # Check for GNU libc feenableexcept AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])]) diff --git a/libgfortran/intrinsics/c99_functions.c b/libgfortran/intrinsics/c99_functions.c index 13d5503..ce96c8c 100644 --- a/libgfortran/intrinsics/c99_functions.c +++ b/libgfortran/intrinsics/c99_functions.c @@ -491,8 +491,10 @@ nextafterf(float x, float y) #endif +#if !defined(HAVE_POWF) || defined(HAVE_BROKEN_POWF) #ifndef HAVE_POWF #define HAVE_POWF 1 +#endif float powf(float x, float y) { -- cgit v1.1