diff --git a/include/cmath b/include/cmath
index 7ddb5fd..51d519d 100644
--- a/include/cmath
+++ b/include/cmath
@@ -317,7 +317,6 @@
 // abs
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, _A1>::type
 abs(_A1 __x) {return fabs(__x);}
@@ -331,7 +330,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __x) {return acosl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 acos(_A1 __x) {return acos((double)__x);}
@@ -345,7 +343,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __x) {return asinl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 asin(_A1 __x) {return asin((double)__x);}
@@ -359,7 +356,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __x) {return atanl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 atan(_A1 __x) {return atan((double)__x);}
@@ -373,7 +369,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __y, long double __x) {return atan2l(__y, __x);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -398,7 +393,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __x) {return ceill(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 ceil(_A1 __x) {return ceil((double)__x);}
@@ -425,7 +419,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __x) {return coshl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 cosh(_A1 __x) {return cosh((double)__x);}
@@ -439,7 +432,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __x) {return expl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 exp(_A1 __x) {return exp((double)__x);}
@@ -453,7 +445,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __x) {return fabsl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 fabs(_A1 __x) {return fabs((double)__x);}
@@ -467,7 +458,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double floor(long double __x) {return floorl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 floor(_A1 __x) {return floor((double)__x);}
@@ -481,7 +471,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __x, long double __y) {return fmodl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -506,7 +495,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __x, int* __e) {return frexpl(__x, __e);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 frexp(_A1 __x, int* __e) {return frexp((double)__x, __e);}
@@ -520,7 +508,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __x, int __e) {return ldexpl(__x, __e);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 ldexp(_A1 __x, int __e) {return ldexp((double)__x, __e);}
@@ -534,7 +521,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double log(long double __x) {return logl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 log(_A1 __x) {return log((double)__x);}
@@ -548,7 +534,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __x) {return log10l(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 log10(_A1 __x) {return log10((double)__x);}
@@ -570,7 +555,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __x, long double __y) {return powl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -595,7 +579,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __x) {return sinl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 sin(_A1 __x) {return sin((double)__x);}
@@ -609,7 +592,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __x) {return sinhl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 sinh(_A1 __x) {return sinh((double)__x);}
@@ -623,7 +605,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __x) {return sqrtl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 sqrt(_A1 __x) {return sqrt((double)__x);}
@@ -637,7 +618,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double tan(long double __x) {return tanl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 tan(_A1 __x) {return tan((double)__x);}
@@ -651,7 +631,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __x) {return tanhl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 tanh(_A1 __x) {return tanh((double)__x);}
@@ -673,7 +652,7 @@
 #undef signbit
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, bool>::type
 signbit(_A1 __x)
 {
@@ -699,7 +678,7 @@
 #undef fpclassify
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, int>::type
 fpclassify(_A1 __x)
 {
@@ -725,7 +704,7 @@
 #undef isfinite
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, bool>::type
 isfinite(_A1 __x)
 {
@@ -751,7 +730,7 @@
 #undef isinf
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, bool>::type
 isinf(_A1 __x)
 {
@@ -777,7 +756,7 @@
 #undef isnan
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, bool>::type
 isnan(_A1 __x)
 {
@@ -803,7 +782,7 @@
 #undef isnormal
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_floating_point<_A1>::value, bool>::type
 isnormal(_A1 __x)
 {
@@ -829,7 +808,7 @@
 #undef isgreater
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -860,7 +839,7 @@
 #undef isgreaterequal
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -891,7 +870,7 @@
 #undef isless
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -922,7 +901,7 @@
 #undef islessequal
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -953,7 +932,7 @@
 #undef islessgreater
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -984,7 +963,7 @@
 #undef isunordered
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
+_LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
     is_floating_point<_A1>::value &&
@@ -1007,7 +986,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double acosh(long double __x) {return acoshl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 acosh(_A1 __x) {return acosh((double)__x);}
@@ -1021,7 +999,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double asinh(long double __x) {return asinhl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 asinh(_A1 __x) {return asinh((double)__x);}
@@ -1035,7 +1012,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double atanh(long double __x) {return atanhl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 atanh(_A1 __x) {return atanh((double)__x);}
@@ -1049,7 +1025,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double cbrt(long double __x) {return cbrtl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 cbrt(_A1 __x) {return cbrt((double)__x);}
@@ -1063,7 +1038,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double copysign(long double __x, long double __y) {return copysignl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1088,7 +1062,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double erf(long double __x) {return erfl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 erf(_A1 __x) {return erf((double)__x);}
@@ -1102,7 +1075,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double erfc(long double __x) {return erfcl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 erfc(_A1 __x) {return erfc((double)__x);}
@@ -1116,7 +1088,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double exp2(long double __x) {return exp2l(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 exp2(_A1 __x) {return exp2((double)__x);}
@@ -1130,7 +1101,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double expm1(long double __x) {return expm1l(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 expm1(_A1 __x) {return expm1((double)__x);}
@@ -1144,7 +1114,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fdim(long double __x, long double __y) {return fdiml(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1176,7 +1145,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fma(long double __x, long double __y, long double __z) {return fmal(__x, __y, __z);}
 
 template <class _A1, class _A2, class _A3>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1203,7 +1171,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fmax(long double __x, long double __y) {return fmaxl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1228,7 +1195,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double fmin(long double __x, long double __y) {return fminl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1253,7 +1219,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double hypot(long double __x, long double __y) {return hypotl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1278,7 +1243,6 @@
 inline _LIBCPP_INLINE_VISIBILITY int ilogb(long double __x) {return ilogbl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, int>::type
 ilogb(_A1 __x) {return ilogb((double)__x);}
@@ -1292,7 +1256,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double lgamma(long double __x) {return lgammal(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 lgamma(_A1 __x) {return lgamma((double)__x);}
@@ -1306,7 +1269,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long long llrint(long double __x) {return llrintl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, long long>::type
 llrint(_A1 __x) {return llrint((double)__x);}
@@ -1320,7 +1282,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long long llround(long double __x) {return llroundl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, long long>::type
 llround(_A1 __x) {return llround((double)__x);}
@@ -1334,7 +1295,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double log1p(long double __x) {return log1pl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 log1p(_A1 __x) {return log1p((double)__x);}
@@ -1348,7 +1308,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double log2(long double __x) {return log2l(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 log2(_A1 __x) {return log2((double)__x);}
@@ -1362,7 +1321,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double logb(long double __x) {return logbl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 logb(_A1 __x) {return logb((double)__x);}
@@ -1376,7 +1334,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long lrint(long double __x) {return lrintl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, long>::type
 lrint(_A1 __x) {return lrint((double)__x);}
@@ -1390,7 +1347,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long lround(long double __x) {return lroundl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, long>::type
 lround(_A1 __x) {return lround((double)__x);}
@@ -1409,7 +1365,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double nearbyint(long double __x) {return nearbyintl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 nearbyint(_A1 __x) {return nearbyint((double)__x);}
@@ -1423,7 +1378,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double nextafter(long double __x, long double __y) {return nextafterl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1448,7 +1402,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double nexttoward(long double __x, long double __y) {return nexttowardl(__x, __y);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 nexttoward(_A1 __x, long double __y) {return nexttoward((double)__x, __y);}
@@ -1462,7 +1415,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double remainder(long double __x, long double __y) {return remainderl(__x, __y);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1487,7 +1439,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double remquo(long double __x, long double __y, int* __z) {return remquol(__x, __y, __z);}
 
 template <class _A1, class _A2>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if
 <
@@ -1512,7 +1463,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double rint(long double __x) {return rintl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 rint(_A1 __x) {return rint((double)__x);}
@@ -1526,7 +1476,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double round(long double __x) {return roundl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 round(_A1 __x) {return round((double)__x);}
@@ -1540,7 +1489,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double scalbln(long double __x, long __y) {return scalblnl(__x, __y);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 scalbln(_A1 __x, long __y) {return scalbln((double)__x, __y);}
@@ -1554,7 +1502,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double scalbn(long double __x, int __y) {return scalbnl(__x, __y);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 scalbn(_A1 __x, int __y) {return scalbn((double)__x, __y);}
@@ -1568,7 +1515,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double tgamma(long double __x) {return tgammal(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 tgamma(_A1 __x) {return tgamma((double)__x);}
@@ -1582,7 +1528,6 @@
 inline _LIBCPP_INLINE_VISIBILITY long double trunc(long double __x) {return truncl(__x);}
 
 template <class _A1>
-_LIBCPP_ALWAYS_INLINE
 _LIBCPP_INLINE_VISIBILITY
 typename enable_if<is_integral<_A1>::value, double>::type
 trunc(_A1 __x) {return trunc((double)__x);}
