http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56298
--- Comment #10 from Piotr Wyderski <piotr.wyderski at gmail dot com> 2013-02-15 11:41:07 UTC --- (In reply to comment #1) More related problems -- do they deserve their own bug reports? 1. The following workaround provided by Jakub doesen't solve the #error problem: > #pragma GCC push_options > #pragma GCC target ("aes") > #include <wmmintrin.h> > #pragma GCC pop_options It is reported by checking the __AES__ macro, which is not defined by #pragma GCC target ("aes"). Similarly with target("sse4.1") and __SSE_4_1__ form nmmintrin.h. 2. Additionally, the use of intrinsic _mm_aeskeygenassist_si128, implemented as shown below: _mm_aeskeygenassist_si128 (__m128i __X, const int __C) { return (__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)__X, __C); } aborts compilation (on 4.7.2) claiming that the __builtin_ia32_aeskeygenassist128 function explicitly requires "-maes" in the command line, despite the fact it is used within a block surrounded by #pragma GCC target ("aes").