--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/components/gcc49/patches/027-cmath_c99.patch Wed Dec 16 20:20:50 2015 -0800
@@ -0,0 +1,1448 @@
+# 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
++
++
+
+