I am using cgt6x_7_4_2 to port a mathematical template library named "Eigen" to C6000. The first examples worked well but the function call .transpose()
"Eigen::MatrixXd Q = P * P.transpose();"
ends up in the compiler error
"error #1055: class member designated by a using-declaration must be visible in a direct base class".
I prefer the compiler setting "legacy COFF" instead of "eabi ELF" but I get the same errors independent of this setting.
This is the compiler output:
**** Build of configuration Debug for project eabi ****
/opt/ti/ccsv5/utils/bin/gmake -k all
Building file: ../algorithms/source/Ausgleichsgerade.cpp
Invoking: C6000 Compiler
"/opt/ti/ccsv5/tools/compiler/c6000/bin/cl6x" -mv6740 -g --preproc_with_compile --preproc_with_line --include_path="/opt/ti/ccsv5/tools/compiler/c6000/include" --include_path="/home/developer/Arbeitsordner/eabi/" --include_path="/home/developer/Arbeitsordner/eabi/algorithms/include" --display_error_number --diag_warning=225 --abi=eabi --obj_directory="algorithms/source" "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/util/Memory.h", line 83: warning #69-D: integer conversion resulted in a change of sign
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/products/Parallelizer.h", line 20: warning #552-D: variable "m_maxThreads" was set but never used
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 199
instantiation of "Eigen::Transpose<Derived> Eigen::DenseBase<Derived>::transpose() [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 199
instantiation of "Eigen::Transpose<Derived> Eigen::DenseBase<Derived>::transpose() [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 199
instantiation of "Eigen::Transpose<Derived> Eigen::DenseBase<Derived>::transpose() [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 199
instantiation of "Eigen::Transpose<Derived> Eigen::DenseBase<Derived>::transpose() [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=const Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 228 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/util/BlasUtil.h"
instantiation of class "Eigen::internal::blas_traits<Eigen::Transpose<Derived>> [with NestedXpr=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 79 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/ProductBase.h"
instantiation of class "Eigen::ProductBase<Derived, Lhs, Rhs> [with Derived=Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>, 5>, Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 379 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/products/GeneralMatrixMatrix.h"
instantiation of class "Eigen::GeneralProduct<Lhs, Rhs, 5> [with Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 572 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/GeneralProduct.h"
instantiation of "const Eigen::ProductReturnType<Derived, OtherDerived, Eigen::internal::product_type<Derived, OtherDerived>::value>::Type Eigen::MatrixBase<Derived>::operator*(const Eigen::MatrixBase<OtherDerived> &) const [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>, OtherDerived=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=const Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 228 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/util/BlasUtil.h"
instantiation of class "Eigen::internal::blas_traits<Eigen::Transpose<Derived>> [with NestedXpr=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 79 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/ProductBase.h"
instantiation of class "Eigen::ProductBase<Derived, Lhs, Rhs> [with Derived=Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>, 5>, Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 379 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/products/GeneralMatrixMatrix.h"
instantiation of class "Eigen::GeneralProduct<Lhs, Rhs, 5> [with Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 572 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/GeneralProduct.h"
instantiation of "const Eigen::ProductReturnType<Derived, OtherDerived, Eigen::internal::product_type<Derived, OtherDerived>::value>::Type Eigen::MatrixBase<Derived>::operator*(const Eigen::MatrixBase<OtherDerived> &) const [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>, OtherDerived=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=const Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 228 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/util/BlasUtil.h"
instantiation of class "Eigen::internal::blas_traits<Eigen::Transpose<Derived>> [with NestedXpr=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 79 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/ProductBase.h"
instantiation of class "Eigen::ProductBase<Derived, Lhs, Rhs> [with Derived=Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>, 5>, Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 379 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/products/GeneralMatrixMatrix.h"
instantiation of class "Eigen::GeneralProduct<Lhs, Rhs, 5> [with Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 572 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/GeneralProduct.h"
instantiation of "const Eigen::ProductReturnType<Derived, OtherDerived, Eigen::internal::product_type<Derived, OtherDerived>::value>::Type Eigen::MatrixBase<Derived>::operator*(const Eigen::MatrixBase<OtherDerived> &) const [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>, OtherDerived=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
"/home/developer/Arbeitsordner/eabi/Eigen/src/Core/Transpose.h", line 67: error #1055: class member designated by a using-declaration must be visible in a direct base class
detected during:
instantiation of class "Eigen::Transpose<MatrixType> [with MatrixType=const Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 228 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/util/BlasUtil.h"
instantiation of class "Eigen::internal::blas_traits<Eigen::Transpose<Derived>> [with NestedXpr=Eigen::Matrix<double, -1, -1, 0, -1, -1>]" at line 79 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/ProductBase.h"
instantiation of class "Eigen::ProductBase<Derived, Lhs, Rhs> [with Derived=Eigen::GeneralProduct<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>, 5>, Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 379 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/products/GeneralMatrixMatrix.h"
instantiation of class "Eigen::GeneralProduct<Lhs, Rhs, 5> [with Lhs=Eigen::Matrix<double, -1, -1, 0, -1, -1>, Rhs=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 572 of "/home/developer/Arbeitsordner/eabi/Eigen/src/Core/GeneralProduct.h"
instantiation of "const Eigen::ProductReturnType<Derived, OtherDerived, Eigen::internal::product_type<Derived, OtherDerived>::value>::Type Eigen::MatrixBase<Derived>::operator*(const Eigen::MatrixBase<OtherDerived> &) const [with Derived=Eigen::Matrix<double, -1, -1, 0, -1, -1>, OtherDerived=Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1>>]" at line 50 of "../algorithms/source/Ausgleichsgerade.cpp"
8 errors detected in the compilation of "../algorithms/source/Ausgleichsgerade.cpp".
>> Compilation failure
gmake: *** [algorithms/source/Ausgleichsgerade.obj] Error 1
gmake: Target `all' not remade because of errors.
**** Build Finished ****
The precompiler output of the function looks like this:
template<typename MatrixType> class Transpose
: public TransposeImpl<MatrixType,typename internal::traits<MatrixType>::StorageKind>
{
public:
typedef typename TransposeImpl<MatrixType,typename internal::traits<MatrixType>::StorageKind>::Base Base;
typedef typename Eigen::internal::traits<Transpose> ::Scalar Scalar; typedef typename Eigen::NumTraits<Scalar> ::Real RealScalar; typedef typename Base::CoeffReturnType CoeffReturnType; typedef typename Eigen::internal::nested<Transpose> ::type Nested; typedef typename Eigen::internal::traits<Transpose> ::StorageKind StorageKind; typedef typename Eigen::internal::traits<Transpose> ::Index Index; enum { RowsAtCompileTime = Eigen::internal::traits<Transpose> ::RowsAtCompileTime, ColsAtCompileTime = Eigen::internal::traits<Transpose> ::ColsAtCompileTime, Flags = Eigen::internal::traits<Transpose> ::Flags, CoeffReadCost = Eigen::internal::traits<Transpose> ::CoeffReadCost, SizeAtCompileTime = Base::SizeAtCompileTime, MaxSizeAtCompileTime = Base::MaxSizeAtCompileTime, IsVectorAtCompileTime = Base::IsVectorAtCompileTime };
inline Transpose(MatrixType& a_matrix) : m_matrix(a_matrix) {}
using Base::operator =; inline Transpose& operator=(const Transpose& other) { Base::operator=(other); return *this; }
inline Index rows() const { return m_matrix.cols(); }
inline Index cols() const { return m_matrix.rows(); }
const typename internal::remove_all<typename MatrixType::Nested>::type&
nestedExpression() const { return m_matrix; }
typename internal::remove_all<typename MatrixType::Nested>::type&
nestedExpression() { return m_matrix.const_cast_derived(); }
protected:
typename MatrixType::Nested m_matrix;
};
Any help or ideas to get the library work on C6000 is highly welcome.
Regards
Holger