Add a Symbolic::FixedExpr helper expression to make sure the compiler fully optimize the usage of last and end.

This commit is contained in:
Gael Guennebaud
2017-01-18 23:16:32 +01:00
parent 15471432fe
commit f3ccbe0419
3 changed files with 15 additions and 1 deletions

View File

@@ -58,7 +58,9 @@ static const Symbolic::SymbolExpr<internal::symbolic_last_tag> last;
#ifdef EIGEN_PARSED_BY_DOXYGEN
static const auto end = last+1;
#else
static const Symbolic::AddExpr<Symbolic::SymbolExpr<internal::symbolic_last_tag>,Symbolic::ValueExpr> end(last+1);
// Using a FixedExpr<1> expression is important here to make sure the compiler
// can fully optimize the computation starting indices with zero overhead.
static const Symbolic::AddExpr<Symbolic::SymbolExpr<internal::symbolic_last_tag>,Symbolic::FixedExpr<1> > end(last+Symbolic::FixedExpr<1>());
#endif
} // end namespace placeholders