From b3b9d7a14c1944f8ce8085cdb631970142020249 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 16 Nov 2015 13:33:54 +0100 Subject: [PATCH] Workaround i387 issue in unit test (grafted from a64156cae5e4fc72a783a14584f1140c5a68a3b3 ) --- test/ref.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/ref.cpp b/test/ref.cpp index 44bbd3bf1..8297e263a 100644 --- a/test/ref.cpp +++ b/test/ref.cpp @@ -34,6 +34,18 @@ inline void on_temporary_creation(int) { // test Ref.h +// Deal with i387 extended precision +#if EIGEN_ARCH_i386 && !(EIGEN_ARCH_x86_64) + +#if EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_LEAST(4,4) +#pragma GCC optimize ("-ffloat-store") +#else +#undef VERIFY_IS_EQUAL +#define VERIFY_IS_EQUAL(X,Y) VERIFY_IS_APPROX(X,Y) +#endif + +#endif + template void ref_matrix(const MatrixType& m) { typedef typename MatrixType::Index Index; @@ -71,7 +83,6 @@ template void ref_matrix(const MatrixType& m) rm2 = m2.block(i,j,brows,bcols); VERIFY_IS_EQUAL(m1, m2); - ConstRefDynMat rm3 = m1.block(i,j,brows,bcols); m1.block(i,j,brows,bcols) *= 2; m2.block(i,j,brows,bcols) *= 2;