This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH, i386]: Fix PR target/35553, -fkeep-inline-functions and -O errors our in SSE headers
On Thu, 13 Mar 2008 at 06:39:09 -0400, Jakub Jelinek wrote:
> All static inlines in the headers should be changed btw, otherwise you can't
> use the _mm_* inlines in e.g. extern inline functions.
> Try e.g.:
> #include <xmmintrin.h>
> extern inline __attribute__ ((gnu_inline)) __m64 foo (__m64 x)
> return _mm_shuffle_pi16 (x, 0x1b);
> __m64 x;
> main (void)
> foo (x);
> return 0;
> with -std=gnu99 -O2 and you'll get a warning, with -pedantic-errors even an
> '_mm_shuffle_pi16' is static but used in inline function 'foo' which is not
> Similarly when foo doesn't have gnu_inline attribute. I think we had a PR
> about this, though don't remember the PR number ATM.
It's PR 34000.
The one complexity with the "extern inline" solution (as mentioned in the
comments on that PR) is that you really do need extern definitions of the
functions (presumably in libgcc), for -fno-inline or in case someone
references an _mm_* function as a pointer-to-function.
lennox at cs dot columbia dot edu