aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Christopher Moore <crmoore@gmail.com>2020-05-14 22:11:19 +0000
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2020-05-14 22:11:19 +0000
commitfa8fd4b4d57323384644394c651ca106d299695f (patch)
tree5868bb2b480e51d504493a819725769c07b797be
parenta187ffea28f04238e1a0b05ae76e9cc9d19d5f6c (diff)
Indexed view should have RowMajorBit when there is staticly a single row
-rw-r--r--Eigen/src/Core/IndexedView.h4
-rw-r--r--test/indexed_view.cpp6
2 files changed, 9 insertions, 1 deletions
diff --git a/Eigen/src/Core/IndexedView.h b/Eigen/src/Core/IndexedView.h
index 5c2c72496..08476251d 100644
--- a/Eigen/src/Core/IndexedView.h
+++ b/Eigen/src/Core/IndexedView.h
@@ -171,7 +171,9 @@ struct unary_evaluator<IndexedView<ArgType, RowIndices, ColIndices>, IndexBased>
FlagsLinearAccessBit = (traits<XprType>::RowsAtCompileTime == 1 || traits<XprType>::ColsAtCompileTime == 1) ? LinearAccessBit : 0,
- Flags = (evaluator<ArgType>::Flags & (HereditaryBits /*| LinearAccessBit | DirectAccessBit*/)) | FlagsLinearAccessBit,
+ FlagsRowMajorBit = traits<XprType>::FlagsRowMajorBit,
+
+ Flags = (evaluator<ArgType>::Flags & (HereditaryBits & ~RowMajorBit /*| LinearAccessBit | DirectAccessBit*/)) | FlagsLinearAccessBit | FlagsRowMajorBit,
Alignment = 0
};
diff --git a/test/indexed_view.cpp b/test/indexed_view.cpp
index 1dff972d2..3ac6706ef 100644
--- a/test/indexed_view.cpp
+++ b/test/indexed_view.cpp
@@ -439,6 +439,12 @@ void check_indexed_view()
VERIFY( MATCH( A(all,1)(1), "101"));
}
+ //Bug IndexView with a single static row should be RowMajor:
+ {
+ // A(1, seq(0,2,1)).cwiseAbs().colwise().replicate(2).eval();
+ STATIC_CHECK(( (internal::evaluator<decltype( A(1,seq(0,2,1)) )>::Flags & RowMajorBit) == RowMajorBit ));
+ }
+
}
EIGEN_DECLARE_TEST(indexed_view)