Hi, On Friday 15 April 2011 16:50:37 Ian Lance Taylor wrote: > Matthias Kretz <kretz@xxxxxxxxxxxxxxxxxxxxxxxx> writes: > > #define VC_WORKAROUND > > __attribute__((optimize("no-tree-vectorize"),target("no- xop"))) > > > > template<> inline Vector<T> &VC_WORKAROUND > > VectorBase<T>::operator>>=(const VectorBase<T> &x) > > { > > > > for_all_vector_entries(i, > > > > d.m(i) >>= x.d.m(i); > > ); > > > > return *static_cast<Vector<T> *>(this); > > > > } > > > > vector.tcc:286:1: sorry, unimplemented: inlining failed in call to > > âVc::SSE::Vector<T>& Vc::SSE::VectorBase<T>::operator<<=(const > > Vc::SSE::VectorBase<T>&) [with T = int]â: target specific option mismatch > > I have no suggestions for a workaround, but I don't think this should > fail with an error like this for a function that does not have the > always_inline attribute. It should just not inline, and give a warning > with -Winline. Please consider opening a bug report. Thanks. How about #define VC_WORKAROUND_IN #define VC_WORKAROUND __attribute__((optimize("no-tree-vectorize"),target("no- xop"),weak) template<> VC_WORKAROUND_IN Vector<T> &VC_WORKAROUND VectorBase<T>::operator>>=(const VectorBase<T> &x) { AFAIU the weak attribute is required. Otherwise, since this function is defined in a header, one would get link errors if the function is used with the same T in more than one compilation unit, no? Regards, Matthias -- Dipl.-Phys. Matthias Kretz http://compeng.uni-frankfurt.de/?mkretz SIMD easy and portable: http://compeng.uni-frankfurt.de/?vc