aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/ProductEvaluators.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-04-13 18:26:08 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-04-13 18:26:08 +0200
commit2630d97c625d642a205ecf00723efd8e28b9639e (patch)
tree9b4f30544fe203afa9cb50f536dd78a9ecef7a1a /Eigen/src/Core/ProductEvaluators.h
parent512ba0ac760c8dd0bd667cbe74f53c440b7e835f (diff)
Fix detection of same matrices when both matrices are not handled by extract_data.
Diffstat (limited to 'Eigen/src/Core/ProductEvaluators.h')
-rw-r--r--Eigen/src/Core/ProductEvaluators.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/Eigen/src/Core/ProductEvaluators.h b/Eigen/src/Core/ProductEvaluators.h
index 443a58c27..bd63b87ff 100644
--- a/Eigen/src/Core/ProductEvaluators.h
+++ b/Eigen/src/Core/ProductEvaluators.h
@@ -467,7 +467,7 @@ struct product_evaluator<Product<Lhs, Rhs, LazyProduct>, ProductTag, DenseShape,
LhsVecPacketSize = unpacket_traits<LhsVecPacketType>::size,
RhsVecPacketSize = unpacket_traits<RhsVecPacketType>::size,
- //
+ // Here, we don't care about alignment larger than the usable packet size.
LhsAlignment = EIGEN_PLAIN_ENUM_MIN(LhsEtorType::Alignment,LhsVecPacketSize*int(sizeof(typename LhsNestedCleaned::Scalar))),
RhsAlignment = EIGEN_PLAIN_ENUM_MIN(RhsEtorType::Alignment,RhsVecPacketSize*int(sizeof(typename RhsNestedCleaned::Scalar))),
@@ -1006,7 +1006,8 @@ struct transposition_matrix_product
const Index size = tr.size();
StorageIndex j = 0;
- if(!(is_same<MatrixTypeCleaned,Dest>::value && extract_data(dst) == extract_data(mat)))
+ const typename Dest::Scalar *dst_data = internal::extract_data(dst);
+ if(!(is_same<MatrixTypeCleaned,Dest>::value && dst_data == extract_data(mat)))
dst = mat;
for(Index k=(Transposed?size-1:0) ; Transposed?k>=0:k<size ; Transposed?--k:++k)