This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC 4.9.0 Release Candidate available from gcc.gnu.org


On Thu, Apr 17, 2014 at 11:38:18AM +0200, PaweÅ Sikora wrote:
> Hi,
> 
> the opt_random.h header includes <x86intrin.h> unconditionally and
> breaks crytopp build
> (redefinition of _mm_shuffle_epi8 in cpu.h).
> could you please add #ifdef __SSSE3__ around this include?

No, just fix cryptopp.
The *intrin.h headers have been redesigned to use #pragma GCC target,
so that they are usable regardless of the command line options used.
So, unlike in 4.8, you can
#include <x86intrin.h>
and similar headers and then have say
__attribute__((target ("ssse3"))) function which can use _mm_shuffle_epi8
and other SSSE3 intrinsics (similarly for lots of other ISA sets),
which wasn't possible before.

So, in this case you'd supposedly change the #ifdef to
#if !defined(__GNUC__) || defined(__SSSE3__) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ > 8) || defined(__INTEL_COMPILER)
or so.  Of course, you can use _mm_shuffle_epi8 only from functions
compiled within #pragma GCC target ("ssse3") (or anything higher)
or __attribute__((target ("ssse3"))).  If you don't, cryptopp
is even more buggy.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]