http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40722
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-02-03 09:07:12 UTC --- (In reply to comment #8) > (In reply to comment #7) > > An updated patch is at > > > > http://gcc.gnu.org/ml/gcc-patches/2010-03/msg00937.html > > > > Patch is fine. It is absolutely necessary to support gcc's intrinsic headers > for mingw. The fixinclude approach is one way to solve it and I am fine by it. > For mingw-w64 we used the #pragma push/pop_macro feature to make sure we > declare function without getting problems by this define in ia32intrin.h. > > Kai Why can't you just _CRTIMP unsigned int __cdecl __MINGW_NOTHROW (_rotl)(unsigned int, int) __MINGW_ATTRIB_CONST; ? _rotl etc. from ia32intrin.h is a function-like macro, so the above prevents the expansion. Is this still a problem on *mingw and *mingw64? I mean, if x86intrin.h can't be included, it sounds like a serious problem for those that use this arch, and it is open for more than a year. I guess H.J.'s patch is just too dangerous, it assumes that _rotl is the first declaration and _lrotr is the last one, I guess much better would be to ifdef out each declaration separately, then there wouldn't be issues with unmatched #if/#endif.