diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-03-13 10:40:01 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-03-13 10:40:01 +0100 |
commit | d7d2f0680e97e0279c04d736df2c63d064b2b2c0 (patch) | |
tree | fca8ce29e0d17a208e2691e3b5c05255b7dca849 /Eigen/src/Core/functors | |
parent | 690f0795d0bb5728a9868004194f13755388263a (diff) |
bug #1684: partially workaround clang's 6/7 bug #40815
Diffstat (limited to 'Eigen/src/Core/functors')
-rw-r--r-- | Eigen/src/Core/functors/AssignmentFunctors.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Eigen/src/Core/functors/AssignmentFunctors.h b/Eigen/src/Core/functors/AssignmentFunctors.h index 9765cc763..bf64ef4ed 100644 --- a/Eigen/src/Core/functors/AssignmentFunctors.h +++ b/Eigen/src/Core/functors/AssignmentFunctors.h @@ -157,7 +157,16 @@ template<typename Scalar> struct functor_traits<swap_assign_op<Scalar> > { enum { Cost = 3 * NumTraits<Scalar>::ReadCost, - PacketAccess = packet_traits<Scalar>::Vectorizable + PacketAccess = + #if defined(EIGEN_VECTORIZE_AVX) && EIGEN_COMP_CLANG && (EIGEN_COMP_CLANG<800 || defined(__apple_build_version__)) + // This is a partial workaround for a bug in clang generating bad code + // when mixing 256/512 bits loads and 128 bits moves. + // See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1684 + // https://bugs.llvm.org/show_bug.cgi?id=40815 + 0 + #else + packet_traits<Scalar>::Vectorizable + #endif }; }; |