From ef3a75060e229740b5de8b25e9b90484bc2702ae Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Tue, 24 Nov 2015 13:15:43 +0000 Subject: [PATCH] Handle C++11 overloads on Solaris 12 * acinclude.m4 (GLIBCXX_CHECK_MATH11_PROTO): New test. * configure.ac: Use it. * configure: Regenerate. * config.h.in: Regenerate. * include/c_global/cmath [__cplusplus >= 201103L] (std::fpclassify): Wrap in !__CORRECT_ISO_CPP11_MATH_H_PROTO. (std::isfinite): Likewise. (std::isinf): Likewise. (std::isnan): Likewise. (std::isnormal): Likewise. (std::signbit): Likewise. (std::isgreater): Likewise. (std::isgreaterequal): Likewise. (std::isless): Likewise. (std::islessequal): Likewise. (std::islessgreater): Likewise. (std::isunordered): Likewise. (std::acosh): Likewise. (std::asinh): Likewise. (std::atanh): Likewise. (std::cbrt): Likewise. (std::copysign): Likewise. (std::erf): Likewise. (std::erfc): Likewise. (std::exp2): Likewise. (std::expm1): Likewise. (std::fdim): Likewise. (std::fma): Likewise. (std::fmax): Likewise. (std::fmin): Likewise. (std::hypot): Likewise. (std::ilogb): Likewise. (std::lgamma): Likewise. (std::llrint): Likewise. (std::llround): Likewise. (std::log1p): Likewise. (std::log2): Likewise. (std::logb): Likewise. (std::lrint): Likewise. (std::lround): Likewise. (std::nearbyint): Likewise. (std::nextafter): Likewise. (std::nexttoward): Likewise. (std::remainder): Likewise. (std::remquo): Likewise. (std::rint): Likewise. (std::round): Likewise. (std::scalbln): Likewise. (std::scalbn): Likewise. (std::tgamma): Likewise. (std::trunc): Likewise. * include/tr1/cmath [_GLIBCXX_USE_C99_MATH_TR1] (std::tr1::acosh): Wrap in !__CORRECT_ISO_CPP11_MATH_H_PROTO. (std::tr1::asinh): Likewise. (std::tr1::atanh): Likewise. (std::tr1::cbrt): Likewise. (std::tr1::copysign): Likewise. (std::tr1::erf): Likewise. (std::tr1::erfc): Likewise. (std::tr1::exp2): Likewise. (std::tr1::expm1): Likewise. (std::tr1::fabs): Likewise. (std::tr1::fdim): Likewise. (std::tr1::fma): Likewise. (std::tr1::fmax): Likewise. (std::tr1::fmin): Likewise. (std::tr1::hypot): Likewise. (std::tr1::ilogb): Likewise. (std::tr1::lgamma): Likewise. (std::tr1::llrint): Likewise. (std::tr1::llround): Likewise. (std::tr1::log1p): Likewise. (std::tr1::log2): Likewise. (std::tr1::logb): Likewise. (std::tr1::lrint): Likewise. (std::tr1::lround): Likewise. (std::tr1::nearbyint): Likewise. (std::tr1::nextafter): Likewise. (std::tr1::nexttoward): Likewise. (std::tr1::remainder): Likewise. (std::tr1::remquo): Likewise. (std::tr1::rint): Likewise. (std::tr1::scalbln): Likewise. (std::tr1::scalbn): Likewise. (std::tr1::tgamma): Likewise. (std::tr1::trunc): Likewise. (std::tr1::pow): Likewise. * testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc: Restrict dg-xfail-if, dg-excess-errors to *-*-solaris2.1[01]*. From-SVN: r230807 --- libstdc++-v3/ChangeLog | 94 +++++++++++++++++++ libstdc++-v3/acinclude.m4 | 46 +++++++++ libstdc++-v3/config.h.in | 5 + libstdc++-v3/configure | 62 ++++++++++++ libstdc++-v3/configure.ac | 1 + libstdc++-v3/include/c_global/cmath | 93 ++++++++++++++++++ libstdc++-v3/include/tr1/cmath | 72 ++++++++++++++ .../cmath/c99_classification_macros_c.cc | 4 +- 8 files changed, 375 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ad487ccf91b..428e21383f1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,97 @@ +2015-11-24 Rainer Orth + + * acinclude.m4 (GLIBCXX_CHECK_MATH11_PROTO): New test. + * configure.ac: Use it. + * configure: Regenerate. + * config.h.in: Regenerate. + + * include/c_global/cmath [__cplusplus >= 201103L] + (std::fpclassify): Wrap in !__CORRECT_ISO_CPP11_MATH_H_PROTO. + (std::isfinite): Likewise. + (std::isinf): Likewise. + (std::isnan): Likewise. + (std::isnormal): Likewise. + (std::signbit): Likewise. + (std::isgreater): Likewise. + (std::isgreaterequal): Likewise. + (std::isless): Likewise. + (std::islessequal): Likewise. + (std::islessgreater): Likewise. + (std::isunordered): Likewise. + (std::acosh): Likewise. + (std::asinh): Likewise. + (std::atanh): Likewise. + (std::cbrt): Likewise. + (std::copysign): Likewise. + (std::erf): Likewise. + (std::erfc): Likewise. + (std::exp2): Likewise. + (std::expm1): Likewise. + (std::fdim): Likewise. + (std::fma): Likewise. + (std::fmax): Likewise. + (std::fmin): Likewise. + (std::hypot): Likewise. + (std::ilogb): Likewise. + (std::lgamma): Likewise. + (std::llrint): Likewise. + (std::llround): Likewise. + (std::log1p): Likewise. + (std::log2): Likewise. + (std::logb): Likewise. + (std::lrint): Likewise. + (std::lround): Likewise. + (std::nearbyint): Likewise. + (std::nextafter): Likewise. + (std::nexttoward): Likewise. + (std::remainder): Likewise. + (std::remquo): Likewise. + (std::rint): Likewise. + (std::round): Likewise. + (std::scalbln): Likewise. + (std::scalbn): Likewise. + (std::tgamma): Likewise. + (std::trunc): Likewise. + * include/tr1/cmath [_GLIBCXX_USE_C99_MATH_TR1] (std::tr1::acosh): + Wrap in !__CORRECT_ISO_CPP11_MATH_H_PROTO. + (std::tr1::asinh): Likewise. + (std::tr1::atanh): Likewise. + (std::tr1::cbrt): Likewise. + (std::tr1::copysign): Likewise. + (std::tr1::erf): Likewise. + (std::tr1::erfc): Likewise. + (std::tr1::exp2): Likewise. + (std::tr1::expm1): Likewise. + (std::tr1::fabs): Likewise. + (std::tr1::fdim): Likewise. + (std::tr1::fma): Likewise. + (std::tr1::fmax): Likewise. + (std::tr1::fmin): Likewise. + (std::tr1::hypot): Likewise. + (std::tr1::ilogb): Likewise. + (std::tr1::lgamma): Likewise. + (std::tr1::llrint): Likewise. + (std::tr1::llround): Likewise. + (std::tr1::log1p): Likewise. + (std::tr1::log2): Likewise. + (std::tr1::logb): Likewise. + (std::tr1::lrint): Likewise. + (std::tr1::lround): Likewise. + (std::tr1::nearbyint): Likewise. + (std::tr1::nextafter): Likewise. + (std::tr1::nexttoward): Likewise. + (std::tr1::remainder): Likewise. + (std::tr1::remquo): Likewise. + (std::tr1::rint): Likewise. + (std::tr1::scalbln): Likewise. + (std::tr1::scalbn): Likewise. + (std::tr1::tgamma): Likewise. + (std::tr1::trunc): Likewise. + (std::tr1::pow): Likewise. + + * testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc: + Restrict dg-xfail-if, dg-excess-errors to *-*-solaris2.1[01]*. + 2015-11-21 David Edelsohn * testsuite/23_containers/vector/profile/vector.cc: Add maxdata diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index e6575eae678..312b1fd8924 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -2146,6 +2146,52 @@ AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_LANG_RESTORE ]) +dnl +dnl Check whether required C++11 overloads are present in . +dnl +AC_DEFUN([GLIBCXX_CHECK_MATH11_PROTO], [ + + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++11" + + case "$host" in + *-*-solaris2.*) + # Solaris 12 introduced the C++11 overloads. A backport to + # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch. + AC_MSG_CHECKING([for C++11 overloads]) + AC_CACHE_VAL(glibcxx_cv_math11_overload, [ + AC_COMPILE_IFELSE([AC_LANG_SOURCE( + [#include + #undef isfinite + namespace std { + inline bool isfinite(float __x) + { return __builtin_isfinite(__x); } + } + ])], + [glibcxx_cv_math11_overload=no], + [glibcxx_cv_math11_overload=yes] + )]) + + # autoheader cannot handle indented templates. + AH_VERBATIM([__CORRECT_ISO_CPP11_MATH_H_PROTO], + [/* Define if all C++11 overloads are available in . */ +#if __cplusplus >= 201103L +#undef __CORRECT_ISO_CPP11_MATH_H_PROTO +#endif]) + + if test $glibcxx_cv_math11_overload = yes; then + AC_DEFINE(__CORRECT_ISO_CPP11_MATH_H_PROTO) + fi + AC_MSG_RESULT([$glibcxx_cv_math11_overload]) + ;; + esac + + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE +]) + dnl dnl Check whether macros, etc are present for dnl diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index f58b2f4e94e..b6cb7aa86e7 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -952,6 +952,11 @@ /* Define to 1 if mutex_timedlock is available. */ #undef _GTHREAD_USE_MUTEX_TIMEDLOCK +/* Define if all C++11 overloads are available in . */ +#if __cplusplus >= 201103L +#undef __CORRECT_ISO_CPP11_MATH_H_PROTO +#endif + #if defined (HAVE__ACOSF) && ! defined (HAVE_ACOSF) # define HAVE_ACOSF 1 # define acosf _acosf diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 3e02b9eabcf..86e66e10ca0 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -18120,6 +18120,68 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++11" + + case "$host" in + *-*-solaris2.*) + # Solaris 12 introduced the C++11 overloads. A backport to + # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++11 overloads" >&5 +$as_echo_n "checking for C++11 overloads... " >&6; } + if test "${glibcxx_cv_math11_overload+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #undef isfinite + namespace std { + inline bool isfinite(float __x) + { return __builtin_isfinite(__x); } + } + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + glibcxx_cv_math11_overload=no +else + glibcxx_cv_math11_overload=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + + # autoheader cannot handle indented templates. + + + if test $glibcxx_cv_math11_overload = yes; then + $as_echo "#define __CORRECT_ISO_CPP11_MATH_H_PROTO 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_math11_overload" >&5 +$as_echo "$glibcxx_cv_math11_overload" >&6; } + ;; + esac + + CXXFLAGS="$ac_save_CXXFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOWNERDEAD" >&5 $as_echo_n "checking for EOWNERDEAD... " >&6; } if test "${glibcxx_cv_system_error1+set}" = set; then : diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 34563480634..4361cf0e450 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -180,6 +180,7 @@ GLIBCXX_ENABLE_VTABLE_VERIFY([no]) # Checks for operating systems support that doesn't require linking. GLIBCXX_CHECK_STDIO_PROTO +GLIBCXX_CHECK_MATH11_PROTO GLIBCXX_CHECK_SYSTEM_ERROR GLIBCXX_CHECK_UCHAR_H diff --git a/libstdc++-v3/include/c_global/cmath b/libstdc++-v3/include/c_global/cmath index 7718ea2e225..c5fca4dec71 100644 --- a/libstdc++-v3/include/c_global/cmath +++ b/libstdc++-v3/include/c_global/cmath @@ -557,6 +557,8 @@ namespace std _GLIBCXX_VISIBILITY(default) _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr int fpclassify(float __x) { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, @@ -571,6 +573,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION fpclassify(long double __x) { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, __x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -578,6 +581,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION fpclassify(_Tp __x) { return __x != 0 ? FP_NORMAL : FP_ZERO; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isfinite(float __x) { return __builtin_isfinite(__x); } @@ -589,6 +593,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isfinite(long double __x) { return __builtin_isfinite(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -596,6 +601,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION isfinite(_Tp __x) { return true; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isinf(float __x) { return __builtin_isinf(__x); } @@ -607,6 +613,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isinf(long double __x) { return __builtin_isinf(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -614,6 +621,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION isinf(_Tp __x) { return false; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isnan(float __x) { return __builtin_isnan(__x); } @@ -625,6 +633,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isnan(long double __x) { return __builtin_isnan(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -632,6 +641,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION isnan(_Tp __x) { return false; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isnormal(float __x) { return __builtin_isnormal(__x); } @@ -643,6 +653,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isnormal(long double __x) { return __builtin_isnormal(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -650,6 +661,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION isnormal(_Tp __x) { return __x != 0 ? true : false; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO // Note: middle-end/36757 is fixed, __builtin_signbit is type-generic. constexpr bool signbit(float __x) @@ -662,6 +674,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool signbit(long double __x) { return __builtin_signbit(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -669,6 +682,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION signbit(_Tp __x) { return __x < 0 ? true : false; } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isgreater(float __x, float __y) { return __builtin_isgreater(__x, __y); } @@ -680,6 +694,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isgreater(long double __x, long double __y) { return __builtin_isgreater(__x, __y); } +#endif template constexpr typename @@ -691,6 +706,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_isgreater(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isgreaterequal(float __x, float __y) { return __builtin_isgreaterequal(__x, __y); } @@ -702,6 +718,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isgreaterequal(long double __x, long double __y) { return __builtin_isgreaterequal(__x, __y); } +#endif template constexpr typename @@ -713,6 +730,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_isgreaterequal(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isless(float __x, float __y) { return __builtin_isless(__x, __y); } @@ -724,6 +742,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isless(long double __x, long double __y) { return __builtin_isless(__x, __y); } +#endif template constexpr typename @@ -735,6 +754,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_isless(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool islessequal(float __x, float __y) { return __builtin_islessequal(__x, __y); } @@ -746,6 +766,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool islessequal(long double __x, long double __y) { return __builtin_islessequal(__x, __y); } +#endif template constexpr typename @@ -757,6 +778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_islessequal(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool islessgreater(float __x, float __y) { return __builtin_islessgreater(__x, __y); } @@ -768,6 +790,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool islessgreater(long double __x, long double __y) { return __builtin_islessgreater(__x, __y); } +#endif template constexpr typename @@ -779,6 +802,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_islessgreater(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr bool isunordered(float __x, float __y) { return __builtin_isunordered(__x, __y); } @@ -790,6 +814,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool isunordered(long double __x, long double __y) { return __builtin_isunordered(__x, __y); } +#endif template constexpr typename @@ -1180,6 +1205,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using ::truncl; /// Additional overloads. +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float acosh(float __x) { return __builtin_acoshf(__x); } @@ -1187,6 +1213,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double acosh(long double __x) { return __builtin_acoshl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1194,6 +1221,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION acosh(_Tp __x) { return __builtin_acosh(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float asinh(float __x) { return __builtin_asinhf(__x); } @@ -1201,6 +1229,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double asinh(long double __x) { return __builtin_asinhl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1208,6 +1237,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION asinh(_Tp __x) { return __builtin_asinh(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float atanh(float __x) { return __builtin_atanhf(__x); } @@ -1215,6 +1245,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double atanh(long double __x) { return __builtin_atanhl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1222,6 +1253,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION atanh(_Tp __x) { return __builtin_atanh(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float cbrt(float __x) { return __builtin_cbrtf(__x); } @@ -1229,6 +1261,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double cbrt(long double __x) { return __builtin_cbrtl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1236,6 +1269,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION cbrt(_Tp __x) { return __builtin_cbrt(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float copysign(float __x, float __y) { return __builtin_copysignf(__x, __y); } @@ -1243,6 +1277,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double copysign(long double __x, long double __y) { return __builtin_copysignl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1252,6 +1287,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return copysign(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float erf(float __x) { return __builtin_erff(__x); } @@ -1259,6 +1295,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double erf(long double __x) { return __builtin_erfl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1266,6 +1303,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION erf(_Tp __x) { return __builtin_erf(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float erfc(float __x) { return __builtin_erfcf(__x); } @@ -1273,6 +1311,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double erfc(long double __x) { return __builtin_erfcl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1280,6 +1319,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION erfc(_Tp __x) { return __builtin_erfc(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float exp2(float __x) { return __builtin_exp2f(__x); } @@ -1287,6 +1327,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double exp2(long double __x) { return __builtin_exp2l(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1294,6 +1335,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION exp2(_Tp __x) { return __builtin_exp2(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float expm1(float __x) { return __builtin_expm1f(__x); } @@ -1301,6 +1343,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double expm1(long double __x) { return __builtin_expm1l(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1308,6 +1351,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION expm1(_Tp __x) { return __builtin_expm1(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float fdim(float __x, float __y) { return __builtin_fdimf(__x, __y); } @@ -1315,6 +1359,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double fdim(long double __x, long double __y) { return __builtin_fdiml(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1324,6 +1369,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fdim(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float fma(float __x, float __y, float __z) { return __builtin_fmaf(__x, __y, __z); } @@ -1331,6 +1377,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double fma(long double __x, long double __y, long double __z) { return __builtin_fmal(__x, __y, __z); } +#endif template constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type @@ -1340,6 +1387,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fma(__type(__x), __type(__y), __type(__z)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float fmax(float __x, float __y) { return __builtin_fmaxf(__x, __y); } @@ -1347,6 +1395,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double fmax(long double __x, long double __y) { return __builtin_fmaxl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1356,6 +1405,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fmax(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float fmin(float __x, float __y) { return __builtin_fminf(__x, __y); } @@ -1363,6 +1413,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double fmin(long double __x, long double __y) { return __builtin_fminl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1372,6 +1423,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fmin(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float hypot(float __x, float __y) { return __builtin_hypotf(__x, __y); } @@ -1379,6 +1431,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double hypot(long double __x, long double __y) { return __builtin_hypotl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1388,6 +1441,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return hypot(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr int ilogb(float __x) { return __builtin_ilogbf(__x); } @@ -1395,6 +1449,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr int ilogb(long double __x) { return __builtin_ilogbl(__x); } +#endif template constexpr @@ -1403,6 +1458,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ilogb(_Tp __x) { return __builtin_ilogb(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float lgamma(float __x) { return __builtin_lgammaf(__x); } @@ -1410,6 +1466,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double lgamma(long double __x) { return __builtin_lgammal(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1417,6 +1474,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lgamma(_Tp __x) { return __builtin_lgamma(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr long long llrint(float __x) { return __builtin_llrintf(__x); } @@ -1424,6 +1482,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long long llrint(long double __x) { return __builtin_llrintl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1431,6 +1490,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION llrint(_Tp __x) { return __builtin_llrint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr long long llround(float __x) { return __builtin_llroundf(__x); } @@ -1438,6 +1498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long long llround(long double __x) { return __builtin_llroundl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1445,6 +1506,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION llround(_Tp __x) { return __builtin_llround(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float log1p(float __x) { return __builtin_log1pf(__x); } @@ -1452,6 +1514,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double log1p(long double __x) { return __builtin_log1pl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1459,6 +1522,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION log1p(_Tp __x) { return __builtin_log1p(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO // DR 568. constexpr float log2(float __x) @@ -1467,6 +1531,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double log2(long double __x) { return __builtin_log2l(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1474,6 +1539,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION log2(_Tp __x) { return __builtin_log2(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float logb(float __x) { return __builtin_logbf(__x); } @@ -1481,6 +1547,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double logb(long double __x) { return __builtin_logbl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1488,6 +1555,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION logb(_Tp __x) { return __builtin_logb(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr long lrint(float __x) { return __builtin_lrintf(__x); } @@ -1495,6 +1563,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long lrint(long double __x) { return __builtin_lrintl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1502,6 +1571,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lrint(_Tp __x) { return __builtin_lrint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr long lround(float __x) { return __builtin_lroundf(__x); } @@ -1509,6 +1579,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long lround(long double __x) { return __builtin_lroundl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1516,6 +1587,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lround(_Tp __x) { return __builtin_lround(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float nearbyint(float __x) { return __builtin_nearbyintf(__x); } @@ -1523,6 +1595,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double nearbyint(long double __x) { return __builtin_nearbyintl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1530,6 +1603,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION nearbyint(_Tp __x) { return __builtin_nearbyint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float nextafter(float __x, float __y) { return __builtin_nextafterf(__x, __y); } @@ -1537,6 +1611,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double nextafter(long double __x, long double __y) { return __builtin_nextafterl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1546,6 +1621,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return nextafter(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float nexttoward(float __x, long double __y) { return __builtin_nexttowardf(__x, __y); } @@ -1553,6 +1629,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double nexttoward(long double __x, long double __y) { return __builtin_nexttowardl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1560,6 +1637,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION nexttoward(_Tp __x, long double __y) { return __builtin_nexttoward(__x, __y); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float remainder(float __x, float __y) { return __builtin_remainderf(__x, __y); } @@ -1567,6 +1645,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double remainder(long double __x, long double __y) { return __builtin_remainderl(__x, __y); } +#endif template constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1576,6 +1655,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return remainder(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float remquo(float __x, float __y, int* __pquo) { return __builtin_remquof(__x, __y, __pquo); } @@ -1583,6 +1663,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double remquo(long double __x, long double __y, int* __pquo) { return __builtin_remquol(__x, __y, __pquo); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -1592,6 +1673,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return remquo(__type(__x), __type(__y), __pquo); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float rint(float __x) { return __builtin_rintf(__x); } @@ -1599,6 +1681,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double rint(long double __x) { return __builtin_rintl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1606,6 +1689,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION rint(_Tp __x) { return __builtin_rint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float round(float __x) { return __builtin_roundf(__x); } @@ -1613,6 +1697,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double round(long double __x) { return __builtin_roundl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1620,6 +1705,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION round(_Tp __x) { return __builtin_round(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float scalbln(float __x, long __ex) { return __builtin_scalblnf(__x, __ex); } @@ -1627,6 +1713,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double scalbln(long double __x, long __ex) { return __builtin_scalblnl(__x, __ex); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1634,6 +1721,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION scalbln(_Tp __x, long __ex) { return __builtin_scalbln(__x, __ex); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float scalbn(float __x, int __ex) { return __builtin_scalbnf(__x, __ex); } @@ -1641,6 +1729,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double scalbn(long double __x, int __ex) { return __builtin_scalbnl(__x, __ex); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1648,6 +1737,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION scalbn(_Tp __x, int __ex) { return __builtin_scalbn(__x, __ex); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float tgamma(float __x) { return __builtin_tgammaf(__x); } @@ -1655,6 +1745,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double tgamma(long double __x) { return __builtin_tgammal(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -1662,6 +1753,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION tgamma(_Tp __x) { return __builtin_tgamma(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float trunc(float __x) { return __builtin_truncf(__x); } @@ -1669,6 +1761,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr long double trunc(long double __x) { return __builtin_truncl(__x); } +#endif template constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, diff --git a/libstdc++-v3/include/tr1/cmath b/libstdc++-v3/include/tr1/cmath index e299c84fd1c..181cc2440f1 100644 --- a/libstdc++-v3/include/tr1/cmath +++ b/libstdc++-v3/include/tr1/cmath @@ -419,6 +419,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Additional overloads [8.16.4]. using std::acos; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float acosh(float __x) { return __builtin_acoshf(__x); } @@ -426,6 +427,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double acosh(long double __x) { return __builtin_acoshl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -435,6 +437,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::asin; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float asinh(float __x) { return __builtin_asinhf(__x); } @@ -442,6 +445,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double asinh(long double __x) { return __builtin_asinhl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -452,6 +456,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::atan; using std::atan2; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float atanh(float __x) { return __builtin_atanhf(__x); } @@ -459,6 +464,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double atanh(long double __x) { return __builtin_atanhl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -466,6 +472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION atanh(_Tp __x) { return __builtin_atanh(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float cbrt(float __x) { return __builtin_cbrtf(__x); } @@ -473,6 +480,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double cbrt(long double __x) { return __builtin_cbrtl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -482,6 +490,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::ceil; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float copysign(float __x, float __y) { return __builtin_copysignf(__x, __y); } @@ -489,6 +498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double copysign(long double __x, long double __y) { return __builtin_copysignl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -501,6 +511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::cos; using std::cosh; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float erf(float __x) { return __builtin_erff(__x); } @@ -508,6 +519,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double erf(long double __x) { return __builtin_erfl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -515,6 +527,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION erf(_Tp __x) { return __builtin_erf(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float erfc(float __x) { return __builtin_erfcf(__x); } @@ -522,6 +535,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double erfc(long double __x) { return __builtin_erfcl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -531,6 +545,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::exp; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float exp2(float __x) { return __builtin_exp2f(__x); } @@ -538,6 +553,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double exp2(long double __x) { return __builtin_exp2l(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -545,6 +561,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION exp2(_Tp __x) { return __builtin_exp2(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float expm1(float __x) { return __builtin_expm1f(__x); } @@ -552,6 +569,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double expm1(long double __x) { return __builtin_expm1l(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -568,6 +586,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using ::fabs; #ifndef __CORRECT_ISO_CPP_MATH_H_PROTO +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float fabs(float __x) { return __builtin_fabsf(__x); } @@ -575,6 +594,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double fabs(long double __x) { return __builtin_fabsl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -583,6 +603,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __builtin_fabs(__x); } #endif +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float fdim(float __x, float __y) { return __builtin_fdimf(__x, __y); } @@ -590,6 +611,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double fdim(long double __x, long double __y) { return __builtin_fdiml(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -601,6 +623,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::floor; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float fma(float __x, float __y, float __z) { return __builtin_fmaf(__x, __y, __z); } @@ -608,6 +631,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double fma(long double __x, long double __y, long double __z) { return __builtin_fmal(__x, __y, __z); } +#endif template inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type @@ -617,6 +641,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fma(__type(__x), __type(__y), __type(__z)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float fmax(float __x, float __y) { return __builtin_fmaxf(__x, __y); } @@ -624,6 +649,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double fmax(long double __x, long double __y) { return __builtin_fmaxl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -633,6 +659,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return fmax(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float fmin(float __x, float __y) { return __builtin_fminf(__x, __y); } @@ -640,6 +667,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double fmin(long double __x, long double __y) { return __builtin_fminl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -652,6 +680,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::fmod; using std::frexp; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float hypot(float __x, float __y) { return __builtin_hypotf(__x, __y); } @@ -659,6 +688,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double hypot(long double __x, long double __y) { return __builtin_hypotl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -668,6 +698,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return hypot(__type(__y), __type(__x)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline int ilogb(float __x) { return __builtin_ilogbf(__x); } @@ -675,6 +706,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline int ilogb(long double __x) { return __builtin_ilogbl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -684,6 +716,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::ldexp; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float lgamma(float __x) { return __builtin_lgammaf(__x); } @@ -691,6 +724,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double lgamma(long double __x) { return __builtin_lgammal(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -698,6 +732,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lgamma(_Tp __x) { return __builtin_lgamma(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline long long llrint(float __x) { return __builtin_llrintf(__x); } @@ -705,6 +740,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long long llrint(long double __x) { return __builtin_llrintl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -712,6 +748,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION llrint(_Tp __x) { return __builtin_llrint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline long long llround(float __x) { return __builtin_llroundf(__x); } @@ -719,6 +756,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long long llround(long double __x) { return __builtin_llroundl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -729,6 +767,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::log; using std::log10; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float log1p(float __x) { return __builtin_log1pf(__x); } @@ -736,6 +775,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double log1p(long double __x) { return __builtin_log1pl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -744,6 +784,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __builtin_log1p(__x); } // DR 568. +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float log2(float __x) { return __builtin_log2f(__x); } @@ -751,6 +792,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double log2(long double __x) { return __builtin_log2l(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -758,6 +800,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION log2(_Tp __x) { return __builtin_log2(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float logb(float __x) { return __builtin_logbf(__x); } @@ -765,6 +808,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double logb(long double __x) { return __builtin_logbl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -774,6 +818,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __builtin_logb(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline long lrint(float __x) { return __builtin_lrintf(__x); } @@ -781,6 +826,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long lrint(long double __x) { return __builtin_lrintl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -788,6 +834,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lrint(_Tp __x) { return __builtin_lrint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline long lround(float __x) { return __builtin_lroundf(__x); } @@ -795,6 +842,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long lround(long double __x) { return __builtin_lroundl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -802,6 +850,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION lround(_Tp __x) { return __builtin_lround(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float nearbyint(float __x) { return __builtin_nearbyintf(__x); } @@ -809,6 +858,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double nearbyint(long double __x) { return __builtin_nearbyintl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -816,6 +866,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION nearbyint(_Tp __x) { return __builtin_nearbyint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float nextafter(float __x, float __y) { return __builtin_nextafterf(__x, __y); } @@ -823,6 +874,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double nextafter(long double __x, long double __y) { return __builtin_nextafterl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -832,6 +884,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return nextafter(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float nexttoward(float __x, long double __y) { return __builtin_nexttowardf(__x, __y); } @@ -839,6 +892,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double nexttoward(long double __x, long double __y) { return __builtin_nexttowardl(__x, __y); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -846,6 +900,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION nexttoward(_Tp __x, long double __y) { return __builtin_nexttoward(__x, __y); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float remainder(float __x, float __y) { return __builtin_remainderf(__x, __y); } @@ -853,6 +908,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double remainder(long double __x, long double __y) { return __builtin_remainderl(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -862,6 +918,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return remainder(__type(__x), __type(__y)); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float remquo(float __x, float __y, int* __pquo) { return __builtin_remquof(__x, __y, __pquo); } @@ -869,6 +926,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double remquo(long double __x, long double __y, int* __pquo) { return __builtin_remquol(__x, __y, __pquo); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type @@ -878,6 +936,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return remquo(__type(__x), __type(__y), __pquo); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float rint(float __x) { return __builtin_rintf(__x); } @@ -885,6 +944,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double rint(long double __x) { return __builtin_rintl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -892,6 +952,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION rint(_Tp __x) { return __builtin_rint(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float round(float __x) { return __builtin_roundf(__x); } @@ -899,6 +960,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double round(long double __x) { return __builtin_roundl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -906,6 +968,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION round(_Tp __x) { return __builtin_round(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float scalbln(float __x, long __ex) { return __builtin_scalblnf(__x, __ex); } @@ -913,6 +976,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double scalbln(long double __x, long __ex) { return __builtin_scalblnl(__x, __ex); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -920,6 +984,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION scalbln(_Tp __x, long __ex) { return __builtin_scalbln(__x, __ex); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float scalbn(float __x, int __ex) { return __builtin_scalbnf(__x, __ex); } @@ -927,6 +992,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double scalbn(long double __x, int __ex) { return __builtin_scalbnl(__x, __ex); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -940,6 +1006,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using std::tan; using std::tanh; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float tgamma(float __x) { return __builtin_tgammaf(__x); } @@ -947,6 +1014,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double tgamma(long double __x) { return __builtin_tgammal(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -954,6 +1022,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION tgamma(_Tp __x) { return __builtin_tgamma(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float trunc(float __x) { return __builtin_truncf(__x); } @@ -961,6 +1030,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double trunc(long double __x) { return __builtin_truncl(__x); } +#endif template inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, @@ -994,6 +1064,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // the discussion about this issue here: // http://gcc.gnu.org/ml/gcc-patches/2012-09/msg01278.html +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float pow(float __x, float __y) { return std::pow(__x, __y); } @@ -1001,6 +1072,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double pow(long double __x, long double __y) { return std::pow(__x, __y); } +#endif template inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc index 983ac95e53b..658f68c27d5 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc +++ b/libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc @@ -20,8 +20,8 @@ // { dg-do compile } // { dg-add-options no_pch } -// { dg-xfail-if "" { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* *-*-aix* } || { uclibc || newlib } } { "*" } { "" } } -// { dg-excess-errors "" { target { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* *-*-aix* } || { uclibc || newlib } } } } +// { dg-xfail-if "" { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[01]* hppa*-*-hpux* *-*-mingw* *-*-aix* } || { uclibc || newlib } } { "*" } { "" } } +// { dg-excess-errors "" { target { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[01]* hppa*-*-hpux* *-*-mingw* *-*-aix* } || { uclibc || newlib } } } } #include -- 2.30.2