* [v3] Handle C++11 <math.h> overloads on Solaris 12
@ 2015-11-17 12:33 Rainer Orth
2015-11-24 12:07 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: Rainer Orth @ 2015-11-17 12:33 UTC (permalink / raw)
To: gcc-patches; +Cc: libstdc++
[-- Attachment #1: Type: text/plain, Size: 4406 bytes --]
Solaris 12 recently introduced the C++11 <math.h> 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 <ro@CeBiTec.Uni-Bielefeld.DE>
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]*.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol12-libstdc++-math11-overloads.patch --]
[-- Type: text/x-patch, Size: 43628 bytes --]
# HG changeset patch
# Parent 95b289a10828d31223c8ccd6c0e1c734e020251f
Handle C++11 <math.h> 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 <math.h>.
+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 <math.h> overloads. A backport to
+ # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch.
+ AC_MSG_CHECKING([for C++11 <math.h> overloads])
+ AC_CACHE_VAL(glibcxx_cv_math11_overload, [
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ [#include <math.h>
+ #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 <math.h>. */
+#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 <system_error>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up, typename _Vp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up, typename _Vp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp, typename _Up>
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<typename _Tp, typename _Up>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp>
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<typename _Tp, typename _Up>
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 <math.h>
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [v3] Handle C++11 <math.h> overloads on Solaris 12
2015-11-17 12:33 [v3] Handle C++11 <math.h> overloads on Solaris 12 Rainer Orth
@ 2015-11-24 12:07 ` Jonathan Wakely
2015-11-24 12:33 ` Rainer Orth
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Wakely @ 2015-11-24 12:07 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, libstdc++
On 17/11/15 13:33 +0100, Rainer Orth wrote:
>Solaris 12 recently introduced the C++11 <math.h> 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.
Why does <tr1/cmath> need to change, did Solaris also define the
functions in namespace std::tr1?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [v3] Handle C++11 <math.h> overloads on Solaris 12
2015-11-24 12:07 ` Jonathan Wakely
@ 2015-11-24 12:33 ` Rainer Orth
2015-11-24 12:43 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: Rainer Orth @ 2015-11-24 12:33 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: gcc-patches, libstdc++
Jonathan Wakely <jwakely@redhat.com> writes:
> On 17/11/15 13:33 +0100, Rainer Orth wrote:
>>Solaris 12 recently introduced the C++11 <math.h> 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.
>
> Why does <tr1/cmath> need to change, did Solaris also define the
> functions in namespace std::tr1?
Without that part, I get errors like
In file included from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:37:0:
/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath: In function 'float std::tr1::acosh(float)':
/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath:423:18: error: 'float std::tr1::acosh(float)' conflicts with a previous declaration
acosh(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 /var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/i386-pc-solaris2.12/bits/stdc++.h:41,
from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:29:
/usr/include/iso/math_c99.h:712:15: note: previous declaration 'float std::acosh(float)'
inline float acosh(float __X) { return __acoshf(__X); }
^~~~~
In file included from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:37:0:
/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath: In function 'long double std::tr1::acosh(long double)':
/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath:427:24: error: 'long double std::tr1::acosh(long double)' conflicts with a previous declaration
acosh(long double __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 /var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/i386-pc-solaris2.12/bits/stdc++.h:41,
from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:29:
/usr/include/iso/math_c99.h:754:21: note: previous declaration 'long double std::acosh(long double)'
inline long double acosh(long double __X) { return __acoshl(__X); }
^~~~~
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [v3] Handle C++11 <math.h> overloads on Solaris 12
2015-11-24 12:33 ` Rainer Orth
@ 2015-11-24 12:43 ` Jonathan Wakely
2015-11-24 12:45 ` Jonathan Wakely
2015-11-24 13:33 ` Rainer Orth
0 siblings, 2 replies; 6+ messages in thread
From: Jonathan Wakely @ 2015-11-24 12:43 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, libstdc++
On 24/11/15 13:32 +0100, Rainer Orth wrote:
>Jonathan Wakely <jwakely@redhat.com> writes:
>
>> On 17/11/15 13:33 +0100, Rainer Orth wrote:
>>>Solaris 12 recently introduced the C++11 <math.h> 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.
>>
>> Why does <tr1/cmath> need to change, did Solaris also define the
>> functions in namespace std::tr1?
>
>Without that part, I get errors like
>
>In file included from /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:37:0:
>/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath: In function 'float std::tr1::acosh(float)':
>/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath:423:18: error: 'float std::tr1::acosh(float)' conflicts with a previous declaration
> acosh(float __x)
Ah yes, because there's a using std::acosh, which puts Solaris' new
overloads into namespace std::tr1.
OK, that's correct then, and the patch is OK for trunk and
gcc-5-branch as far as I'm concerned.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [v3] Handle C++11 <math.h> overloads on Solaris 12
2015-11-24 12:43 ` Jonathan Wakely
@ 2015-11-24 12:45 ` Jonathan Wakely
2015-11-24 13:33 ` Rainer Orth
1 sibling, 0 replies; 6+ messages in thread
From: Jonathan Wakely @ 2015-11-24 12:45 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, libstdc++
On 24/11/15 12:35 +0000, Jonathan Wakely wrote:
>Ah yes, because there's a using std::acosh, which puts Solaris' new
Oops, I meant "using ::acosh" not "using std::acosh" (the latter
wouldn't work in C++03 mode).
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [v3] Handle C++11 <math.h> overloads on Solaris 12
2015-11-24 12:43 ` Jonathan Wakely
2015-11-24 12:45 ` Jonathan Wakely
@ 2015-11-24 13:33 ` Rainer Orth
1 sibling, 0 replies; 6+ messages in thread
From: Rainer Orth @ 2015-11-24 13:33 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: gcc-patches, libstdc++
Jonathan Wakely <jwakely@redhat.com> writes:
> On 24/11/15 13:32 +0100, Rainer Orth wrote:
>>Jonathan Wakely <jwakely@redhat.com> writes:
>>
>>> On 17/11/15 13:33 +0100, Rainer Orth wrote:
>>>>Solaris 12 recently introduced the C++11 <math.h> 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.
>>>
>>> Why does <tr1/cmath> need to change, did Solaris also define the
>>> functions in namespace std::tr1?
>>
>>Without that part, I get errors like
>>
>>In file included from
>> /vol/gcc/src/hg/trunk/local/libstdc++-v3/include/precompiled/stdtr1c++.h:37:0:
>>/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath:
>> In function 'float std::tr1::acosh(float)':
>>/var/gcc/regression/trunk/12-gcc/build/i386-pc-solaris2.12/libstdc++-v3/include/tr1/cmath:423:18:
>> error: 'float std::tr1::acosh(float)' conflicts with a previous
>> declaration
>> acosh(float __x)
>
> Ah yes, because there's a using std::acosh, which puts Solaris' new
> overloads into namespace std::tr1.
>
> OK, that's correct then, and the patch is OK for trunk and
> gcc-5-branch as far as I'm concerned.
Thanks. I've installed the patch on both mainline and the gcc-5 branch
at once, rather than waiting for mainline soak time: in case there are
problems, it gives us more time to act on the branch this way.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-11-24 13:29 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-17 12:33 [v3] Handle C++11 <math.h> overloads on Solaris 12 Rainer Orth
2015-11-24 12:07 ` Jonathan Wakely
2015-11-24 12:33 ` Rainer Orth
2015-11-24 12:43 ` Jonathan Wakely
2015-11-24 12:45 ` Jonathan Wakely
2015-11-24 13:33 ` Rainer Orth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).