Fix Jet test failures on ARMv8 with recent Xcode
Fixes #774
Change-Id: I741924bc82f62f122c47df2b38e02a50e0fdb0da
diff --git a/internal/ceres/jet_test.cc b/internal/ceres/jet_test.cc
index 6a76e1d..ef05f40 100644
--- a/internal/ceres/jet_test.cc
+++ b/internal/ceres/jet_test.cc
@@ -32,8 +32,11 @@
// with the following pragma.
#ifdef _MSC_VER
#pragma fenv_access(on)
-#else
+#elif !(defined(__ARM_ARCH) && __ARM_ARCH >= 8)
+// NOTE: FENV_ACCESS cannot be set to ON when targeting arm(v8)
#pragma STDC FENV_ACCESS ON
+#else
+#define CERES_NO_FENV_ACCESS
#endif
#include "ceres/jet.h"
@@ -699,7 +702,9 @@
EXPECT_THAT(fmax(std::numeric_limits<double>::quiet_NaN(), x),
IsAlmostEqualTo(x));
+#ifndef CERES_NO_FENV_ACCESS
EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
+#endif
}
TEST(Jet, Fmin) {
@@ -719,7 +724,9 @@
EXPECT_THAT(fmin(std::numeric_limits<double>::quiet_NaN(), x),
IsAlmostEqualTo(x));
+#ifndef CERES_NO_FENV_ACCESS
EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
+#endif
}
TEST(Jet, Fdim) {
@@ -744,7 +751,9 @@
EXPECT_TRUE(isnan(fdim(x, std::numeric_limits<double>::quiet_NaN())));
EXPECT_TRUE(isnan(fdim(std::numeric_limits<double>::quiet_NaN(), x)));
+#ifndef CERES_NO_FENV_ACCESS
EXPECT_EQ(std::fetestexcept(FE_ALL_EXCEPT & ~FE_INEXACT), 0);
+#endif
}
TEST(Jet, CopySign) {