diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-06-12 11:25:57 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-06-12 11:25:57 +0200 |
commit | 91b64a9c65cac7d967c9be8f8cade068ed421877 (patch) | |
tree | 15e59b1a37343acfc71b3aeb9d1f32d3d67fff82 /Eigen/src/Core/Map.h | |
parent | 84d103bee88d8a3ba7ccdeecb296ebae6c6920ff (diff) |
Relax aligned-on-scalar assert as in the 3.2 branch
Diffstat (limited to 'Eigen/src/Core/Map.h')
-rw-r--r-- | Eigen/src/Core/Map.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Eigen/src/Core/Map.h b/Eigen/src/Core/Map.h index 6b2b3ade4..ce431edc8 100644 --- a/Eigen/src/Core/Map.h +++ b/Eigen/src/Core/Map.h @@ -124,6 +124,7 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma : Base(cast_to_pointer_type(dataPtr)), m_stride(stride) { PlainObjectType::Base::_check_template_params(); + checkPointer(dataPtr); } /** Constructor in the dynamic-size vector case. @@ -137,6 +138,7 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma : Base(cast_to_pointer_type(dataPtr), size), m_stride(stride) { PlainObjectType::Base::_check_template_params(); + checkPointer(dataPtr); } /** Constructor in the dynamic-size matrix case. @@ -151,11 +153,24 @@ template<typename PlainObjectType, int MapOptions, typename StrideType> class Ma : Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride) { PlainObjectType::Base::_check_template_params(); + checkPointer(dataPtr); } EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Map) protected: + + static void checkPointer(const Scalar* dataPtr) + { + enum { + MightTryToAlignOnScalar = internal::packet_traits<Scalar>::AlignedOnScalar + && bool(internal::traits<Map>::Flags&PacketAccessBit) + && internal::is_lvalue<Map>::value + }; + eigen_assert(EIGEN_IMPLIES(bool(MightTryToAlignOnScalar), (size_t(dataPtr) % sizeof(Scalar)) == 0) + && "input pointer is not aligned on scalar boundary, e.g., use \"EIGEN_ALIGN8 T ptr[N];\" for double or complex<float>"); + } + StrideType m_stride; }; |