bug #1646: disable aliasing detection for empty and 1x1 expression

This commit is contained in:
Gael Guennebaud 2019-01-16 14:33:45 +01:00
parent 0b466b6933
commit 502f717980
2 changed files with 13 additions and 1 deletions

View File

@ -392,7 +392,8 @@ struct checkTransposeAliasing_impl<Derived, OtherDerived, false>
template<typename Dst, typename Src>
void check_for_aliasing(const Dst &dst, const Src &src)
{
internal::checkTransposeAliasing_impl<Dst, Src>::run(dst, src);
if(src.size()>1)
internal::checkTransposeAliasing_impl<Dst, Src>::run(dst, src);
}
} // end namespace internal

View File

@ -171,6 +171,17 @@ void adjoint_extra()
c = MatrixXd::Ones(10,10) * 1.0 + c;
c = c + MatrixXd::Ones(10,10) .cwiseProduct( MatrixXd::Zero(10,10) );
c = MatrixXd::Ones(10,10) * MatrixXd::Zero(10,10);
// regression for bug 1646
for (int j = 0; j < 10; ++j) {
c.col(j).head(j) = c.row(j).head(j);
}
a.conservativeResize(1,1);
a = a.transpose();
a.conservativeResize(0,0);
a = a.transpose();
}
EIGEN_DECLARE_TEST(adjoint)