Re: target specific option mismatch?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux