components/gcc49/patches/027-cmath_c99.patch
changeset 6923 338aea22bf22
parent 6922 499ba999c1ee
child 6924 e8aaad6b5075
--- a/components/gcc49/patches/027-cmath_c99.patch	Tue Jul 05 09:31:58 2016 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1448 +0,0 @@
-# Imported from GCC upstream. Originally applied to GCC > 5.3, backported
-# to 4.9.3 and 5.3.
-#
-# S12 build 86 introduces changes to <math.h> and <iso/math_c99.h>.
-# <iso/math_c99.h> now contains the inline template declarations and
-# definitions of many C99 Math C++ functions.
-# This wreaks havoc for consumers of cmath. We have no choice but to do
-# an adjustment to cmath. Corresponding changes to ./configure to make it
-# recognize when it cmatch changes are needed are included in
-# this patch.  The bulk of the changes are based on a recent upstream
-# changeset:
-#   https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=230807
-#
-# The correct solution here is to fix <iso/math_c99.h>. The changes
-# introduced in build 86 are unnecessary and ill-formed.
-diff -r -u libstdc++-v3/include/c_global/cmath libstdc++-v3/include/c_global/cmath
---- libstdc++-v3/include/c_global/cmath	Thu Jan  2 14:30:10 2014
-+++ libstdc++-v3/include/c_global/cmath	Thu Dec 10 07:37:50 2015
-@@ -557,6 +557,8 @@
- _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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     isnormal(_Tp __x)
-     { return __x != 0 ? true : false; }
- 
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   // The front-end doesn't provide a type generic builtin (libstdc++/58625).
-   constexpr bool
-   signbit(float __x)
-@@ -662,6 +674,7 @@
-   constexpr bool
-   signbit(long double __x)
-   { return __builtin_signbitl(__x); }
-+#endif
- 
-   template<typename _Tp>
-     constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
-@@ -669,6 +682,7 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-   using ::truncl;
- 
-   /// Additional overloads.
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   constexpr float
-   acosh(float __x)
-   { return __builtin_acoshf(__x); }
-@@ -1187,6 +1213,7 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   constexpr int
-   ilogb(long double __x)
-   { return __builtin_ilogbl(__x); }
-+#endif
- 
-   template<typename _Tp>
-     constexpr
-@@ -1403,6 +1458,7 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 -r -u libstdc++-v3/include/tr1/cmath libstdc++-v3/include/tr1/cmath
---- libstdc++-v3/include/tr1/cmath	Thu Jan  2 14:30:10 2014
-+++ libstdc++-v3/include/tr1/cmath	Thu Dec 10 07:34:33 2015
-@@ -419,6 +419,7 @@
-   /// 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 @@
-   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 @@
- 
-   using std::asin;
- 
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   inline float
-   asinh(float __x)
-   { return __builtin_asinhf(__x); }
-@@ -442,6 +445,7 @@
-   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 @@
-   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 @@
-   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 @@
-     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 @@
-   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 @@
- 
-   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 @@
-   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 @@
-   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 @@
-   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 @@
-     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 @@
-   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 @@
- 
-   using std::exp;
- 
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   inline float
-   exp2(float __x)
-   { return __builtin_exp2f(__x); }
-@@ -538,6 +553,7 @@
-   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 @@
-     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 @@
-   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 @@
-   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 @@
-   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 @@
-     { 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 @@
-   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 @@
- 
-   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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-   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 @@
-   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 @@
-       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 @@
-   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 @@
- 
-   using std::ldexp;
- 
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   inline float
-   lgamma(float __x)
-   { return __builtin_lgammaf(__x); }
-@@ -691,6 +724,7 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-   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 @@
-   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 @@
-     { 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 @@
-   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 @@
-     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 @@
-   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 @@
-       return __builtin_logb(__x);
-     }
- 
-+#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO
-   inline long
-   lrint(float __x)
-   { return __builtin_lrintf(__x); }
-@@ -781,6 +826,7 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-     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 @@
-   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 @@
-       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 @@
-   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 @@
-       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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-     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 @@
-   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 @@
-   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 @@
-   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 @@
-     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 @@
-   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 @@
-   // 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 @@
-   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 -r -u libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
---- libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc	Thu Jan  2 14:30:10 2014
-+++ libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc	Thu Dec 10 07:40:27 2015
-@@ -20,9 +20,10 @@
- // { dg-do compile }
- // { dg-add-options no_pch }
- 
--// { dg-xfail-if "" { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* } || { uclibc || newlib } } { "*" } { "" } }
--// { dg-excess-errors "" { target { { *-*-linux* *-*-gnu* *-*-darwin* *-*-solaris2.1[0-9]* hppa*-*-hpux* *-*-mingw* } || { 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>
- 
- void fpclassify() { }
-
---- libstdc++-v3/include/bits/c++config  Thu Jan  2 14:30:10 2014
-+++ libstdc++-v3/include/bits/c++config       Thu Dec 10 08:35:47 2015
-@@ -456,6 +456,12 @@
- # define _GLIBCXX_FAST_MATH 0
- #endif
- 
-+/* Define if all C++11 overloads are available in <math.h>.  */
-+#if __cplusplus >= 201103L
-+#define __CORRECT_ISO_CPP11_MATH_H_PROTO 1
-+#endif
-+
-+
- // This marks string literals in header files to be extracted for eventual
- // translation.  It is primarily used for messages in thrown exceptions; see
- // src/functexcept.cc.  We use __N because the more traditional _N is used
-
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOWNERDEAD" >&5
- $as_echo_n "checking for EOWNERDEAD... " >&6; }
-
-
-#
-# Since GCC is sensitive to which version of autoconf is used, we are
-# also including a patch to configure here to avoid running autoconf.
-# Perhaps we will make this work with the version of autoconf we are
-# shipping in the future.
-#
-diff -r -u libstdc++-v3/configure libstdc++-v3/configure
---- libstdc++-v3/configure	Thu Jan 23 13:17:15 2014
-+++ libstdc++-v3/configure		Thu Dec 10 08:19:59 2015
-@@ -17486,8 +17486,65 @@
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- 
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- 
-+  ac_save_CXXFLAGS="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAGS -std=c++11"
- 
-+  case "$host" in
-+    *-*-solaris2.*)
-+      # Solaris 12 introduced the C++11 <math.h> overloads.  A backport to
-+      # a Solaris 11.3 SRU is likely, maybe even a Solaris 10 patch.
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++11 <math.h> overloads" >&5
-+$as_echo_n "checking for C++11 <math.h> overloads... " >&6; }
-+      if ${glibcxx_cv_math11_overload+:} false; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+
-+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <math.h>
-+           #undef isfinite
-+           namespace std {
-+             inline bool isfinite(float __x)
-+             { return __builtin_isfinite(__x); }
-+           }
-+
-+_ACEOF
-+if ac_fn_cxx_try_compile "$LINENO"; then :
-+  glibcxx_cv_math11_overload=no
-+else
-+  glibcxx_cv_math11_overload=yes
-+
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+
-+
-+      # autoheader cannot handle indented templates.
-+
-+
-+      if test $glibcxx_cv_math11_overload = yes; then
-+        $as_echo "#define __CORRECT_ISO_CPP11_MATH_H_PROTO 1" >>confdefs.h
-+
-+      fi
-+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_math11_overload" >&5
-+$as_echo "$glibcxx_cv_math11_overload" >&6; }
-+      ;;
-+  esac
-+
-+  CXXFLAGS="$ac_save_CXXFLAGS"
-+  ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-
-