From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 105144 invoked by alias); 17 Nov 2015 12:33:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 105124 invoked by uid 89); 17 Nov 2015 12:33:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=no version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: smtp.CeBiTec.Uni-Bielefeld.DE Received: from smtp.CeBiTec.Uni-Bielefeld.DE (HELO smtp.CeBiTec.Uni-Bielefeld.DE) (129.70.160.84) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 17 Nov 2015 12:33:51 +0000 Received: from localhost (localhost.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTP id 97B34175; Tue, 17 Nov 2015 13:33:48 +0100 (CET) Received: from smtp.CeBiTec.Uni-Bielefeld.DE ([127.0.0.1]) by localhost (malfoy.CeBiTec.Uni-Bielefeld.DE [127.0.0.1]) (amavisd-new, port 10024) with LMTP id Xb9wNMQ-MqND; Tue, 17 Nov 2015 13:33:25 +0100 (CET) Received: from lokon.CeBiTec.Uni-Bielefeld.DE (lokon.CeBiTec.Uni-Bielefeld.DE [129.70.161.110]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.CeBiTec.Uni-Bielefeld.DE (Postfix) with ESMTPS id 8ECC616E; Tue, 17 Nov 2015 13:33:25 +0100 (CET) Received: (from ro@localhost) by lokon.CeBiTec.Uni-Bielefeld.DE (8.15.2+Sun/8.15.2/Submit) id tAHCXP13012477; Tue, 17 Nov 2015 13:33:25 +0100 (CET) From: Rainer Orth To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org Subject: [v3] Handle C++11 overloads on Solaris 12 Date: Tue, 17 Nov 2015 12:33:00 -0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (usg-unix-v) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-IsSubscribed: yes X-SW-Source: 2015-11/txt/msg02075.txt.bz2 --=-=-= Content-Type: text/plain Content-length: 4406 Solaris 12 recently introduced the C++11 overloads, which caused bootstrap to be broken on both mainline and the gcc-5 branch: In file included from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdc++.h:41:0: /var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/cmath: In function 'constexpr int std::fpclassify(float)': /var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/cmath:561:3: error: redefinition of 'constexpr int std::fpclassify(float)' fpclassify(float __x) ^ In file included from /usr/include/math.h:13:0, from /var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/cmath:44, from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdc++.h:41: /usr/include/iso/math_c99.h:647:13: note: 'int std::fpclassify(float)' previously defined here inline int fpclassify(float __X) { return __builtin_fpclassify( ^ The following patch fixes this by testing for the problem and wrapping the overloads in include/c_global/cmath and include/tr1/cmath appropriately. The test needs to be dynamic since apparently a backport to Solaris 11 (and perhaps even Solaris 10) is planned. Bootstrapped without regressions on {i386-pc,sparc-sun}-solaris2.1[012] and x86_64-pc-linux-gnu. Ok for mainline and the gcc-5 branch (where the patch is identical except for minimally different context and not restricting the dg-excess-errors in c99_classification_macros_c.cc to *-*-solaris2.1[01]* since the branch still defaults to -std=gnu++98). Rainer 2015-11-09 Rainer Orth libstdc++-v3: * 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]*. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=sol12-libstdc++-math11-overloads.patch Content-length: 43628 # HG changeset patch # Parent 95b289a10828d31223c8ccd6c0e1c734e020251f Handle C++11 overloads on Solaris 12 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1943,6 +1943,52 @@ AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ ]) 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 AC_DEFUN([GLIBCXX_CHECK_SYSTEM_ERROR], [ diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac --- 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 --- a/libstdc++-v3/include/c_global/cmath +++ b/libstdc++-v3/include/c_global/cmath @@ -557,6 +557,8 @@ namespace std _GLIBCXX_VISIBILITY(defaul _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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool isgreater(long double __x, long double __y) { return __builtin_isgreater(__x, __y); } +#endif template constexpr typename @@ -691,6 +706,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool isgreaterequal(long double __x, long double __y) { return __builtin_isgreaterequal(__x, __y); } +#endif template constexpr typename @@ -713,6 +730,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool isless(long double __x, long double __y) { return __builtin_isless(__x, __y); } +#endif template constexpr typename @@ -735,6 +754,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool islessequal(long double __x, long double __y) { return __builtin_islessequal(__x, __y); } +#endif template constexpr typename @@ -757,6 +778,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool islessgreater(long double __x, long double __y) { return __builtin_islessgreater(__x, __y); } +#endif template constexpr typename @@ -779,6 +802,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr bool isunordered(long double __x, long double __y) { return __builtin_isunordered(__x, __y); } +#endif template constexpr typename @@ -1180,6 +1205,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul using ::truncl; /// Additional overloads. +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO constexpr float acosh(float __x) { return __builtin_acoshf(__x); } @@ -1187,6 +1213,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul constexpr int ilogb(long double __x) { return __builtin_ilogbl(__x); } +#endif template constexpr @@ -1403,6 +1458,7 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 @@ namespace std _GLIBCXX_VISIBILITY(defaul 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 --- a/libstdc++-v3/include/tr1/cmath +++ b/libstdc++-v3/include/tr1/cmath @@ -419,6 +419,7 @@ namespace tr1 /// 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 @@ namespace tr1 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 @@ namespace tr1 using std::asin; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float asinh(float __x) { return __builtin_asinhf(__x); } @@ -442,6 +445,7 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 using std::exp; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float exp2(float __x) { return __builtin_exp2f(__x); } @@ -538,6 +553,7 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 { 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 using std::ldexp; +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline float lgamma(float __x) { return __builtin_lgammaf(__x); } @@ -691,6 +724,7 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 { 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 return __builtin_logb(__x); } +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO inline long lrint(float __x) { return __builtin_lrintf(__x); } @@ -781,6 +826,7 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 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 @@ namespace tr1 // 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 @@ namespace tr1 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 --- 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 --=-=-= Content-Type: text/plain Content-length: 143 -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University --=-=-=--