Compile problems with reference implementation and gnu 3.4.5

Schnetzer, Everett eschnetz at harris.com
Wed Sep 5 12:48:53 UTC 2007


Hi,

I am trying to port the reference implementation to Windows using MinGW
and gnu 3.4.5, and the doesn't like certain static methods within
template structs. The first error encountered while building the
tests/ref-impl programs is:

g++ -DUNIT_TEST_FAILURE_PRINT \
-I../../src -I/include \
-c math-matvec.cpp -o math-matvec.o
../../src/vsip/core/matvec.hpp: In function `typename
vsip::Promotion<Left, Right>::type
vsip::impl::impl_dot(vsip::const_Vector<T0, Block0>,
vsip::const_Vector<T1, Block1>) [with T0 = vsip::cscalar_f, T1 =
vsip::cscalar_f, Block0 = vsip::Dense<1u, vsip::cscalar_f,
vsip::tuple<0u, 1u, 2u>, vsip::Local_map>, Block1 = const
vsip::impl::Unary_expr_block<1u, vsip::impl::conj_functor,
vsip::Dense<1u, vsip::cscalar_f, vsip::tuple<0u, 1u, 2u>,
vsip::Local_map>, vsip::cscalar_f>]':
../../src/vsip/core/matvec.hpp:609:   instantiated from `typename
vsip::Promotion<std::complex<_Tp>, std::complex<Right> >::type
vsip::cvjdot(vsip::const_Vector<std::complex<_Tp>, Block0>,
vsip::const_Vector<std::complex<Right>, Block1>) [with T0 = float, T1 =
float, Block0 = vsip::Dense<1u, vsip::cscalar_f, vsip::tuple<0u, 1u,
2u>, vsip::Local_map>, Block1 = vsip::Dense<1u, vsip::cscalar_f,
vsip::tuple<0u, 1u, 2u>, vsip::Local_map>]'
math-matvec.cpp:83:   instantiated from here
../../src/vsip/core/matvec.hpp:164: error: `exec' is not a member of
`vsip::impl::Evaluator<vsip::impl::Op_prod_vv_dot,
vsip::impl::Return_scalar<std::complex<float> >,
vsip::impl::Op_list_2<vsip::Dense<1u, vsip::cscalar_f, vsip::tuple<0u,
1u, 2u>, vsip::Local_map>, const vsip::impl::Unary_expr_block<1u,
vsip::impl::conj_functor, vsip::Dense<1u, vsip::cscalar_f,
vsip::tuple<0u, 1u, 2u>, vsip::Local_map>, vsip::cscalar_f> >,
vsip::impl::Cvsip_tag>'

I cannot spot any errors in the source that would lead to this error.
The compiler doesn't have this issue with the GPL version of the code,
although there seems to be similar implementation patterns in that code
as well. The error does show up in the GPL version of the tests
(matvec-prod.cpp) if I force it to use the reference version via the
VSIP_IMPL_REF_IMPL flag. So I'm stuck trying to figure out why gnu 3.4.5
doesn't like the implementations of Evaluator in core/matvec.hpp. Any
clues would be appreciated.

Sincerely,

Everett Schnetzer
Software Engineer, Harris GCSD
eschnetz at harris.com
321-727-6607

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sourcerytools.com/pipermail/vsipl++/attachments/20070905/c2060fef/attachment.html>


More information about the vsipl++ mailing list