__assert_fail(): remove _Noreturn, to get proper stacktraces
[musl] / src / math / fmaf.c
index 0dccf10..a1c7f4f 100644 (file)
@@ -37,6 +37,7 @@
  */
 float fmaf(float x, float y, float z)
 {
+       #pragma STDC FENV_ACCESS ON
        double xy, result;
        uint32_t hr, lr;
 
@@ -54,7 +55,9 @@ float fmaf(float x, float y, float z)
         * If result is inexact, and exactly halfway between two float values,
         * we need to adjust the low-order bit in the direction of the error.
         */
+#ifdef FE_TOWARDZERO
        fesetround(FE_TOWARDZERO);
+#endif
        volatile double vxy = xy;  /* XXX work around gcc CSE bug */
        double adjusted_result = vxy + z;
        fesetround(FE_TONEAREST);