Matthias Kretz <kretz@xxxxxxxxxxxxxxxxxxxxxxxx> writes: > I experience a miscompile with GCC 4.6.0 (#48616) and was trying to implement > a workaround in my library, but no success. The bug is connected to use of the > XOP instruction set and -ftree-vectorize. So I thought I can just disable one > or both of those in the function where the miscompile happens. But that > function is a member of a template class and thus inlined. Apparently that > leads to neither "#pragma GCC optimize/target" nor > "__attribute__((optimize/target))" changing anything, or is that another bug? > > Anyway this is what I got: > > #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 > > > Any suggestions how to implement a workaround? 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. Ian