From 159fb181c222afb3634006f0a620dd5b5419e924 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 17 Feb 2015 16:27:20 +0100 Subject: [PATCH] Disable __m128* wrappers when compiling with AVX and -fabi-version=4 --- Eigen/src/Core/arch/SSE/PacketMath.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h index acbbd0869..b5a0ba2bc 100755 --- a/Eigen/src/Core/arch/SSE/PacketMath.h +++ b/Eigen/src/Core/arch/SSE/PacketMath.h @@ -28,13 +28,12 @@ namespace internal { #endif #endif -#if defined EIGEN_VECTORIZE_AVX && EIGEN_COMP_GNUC_STRICT +#if (defined EIGEN_VECTORIZE_AVX) && EIGEN_COMP_GNUC_STRICT && (__GXX_ABI_VERSION < 1004) // With GCC's default ABI version, a __m128 or __m256 are the same types and therefore we cannot // have overloads for both types without linking error. // One solution is to increase ABI version using -fabi-version=4 (or greater). -// To workaround this inconvenince, we rather wrap 128bit types into the following helper +// Otherwise, we workaround this inconvenience by wrapping 128bit types into the following helper // structure: -// TODO disable this wrapper if abi-versio>=4, but how to detect that without asking the user to define a macro? template struct eigen_packet_wrapper {