mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-30 17:40:05 +08:00
Relax aligned-on-scalar assert as in the 3.2 branch
This commit is contained in:
parent
84d103bee8
commit
91b64a9c65
@ -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;
|
||||
};
|
||||
|
||||
|
@ -160,8 +160,6 @@ template<typename Derived> class MapBase<Derived, ReadOnlyAccessors>
|
||||
EIGEN_DEVICE_FUNC
|
||||
void checkSanity() const
|
||||
{
|
||||
eigen_assert(EIGEN_IMPLIES(internal::packet_traits<Scalar>::AlignedOnScalar, (size_t(m_data) % sizeof(Scalar)) == 0)
|
||||
&& "input pointer is not aligned on scalar boundary, e.g., use \"EIGEN_ALIGN8 T ptr[N];\" for double or complex<float>");
|
||||
eigen_assert(EIGEN_IMPLIES(internal::traits<Derived>::IsAligned, (size_t(m_data) % EIGEN_ALIGN_BYTES) == 0) && "data is not aligned");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user