This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/40722] [4.5/4.6 Regression] ia32intrin.h defines of _rotl, _rotr conflict with target stdlib.h decls
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 3 Feb 2011 09:07:24 +0000
- Subject: [Bug target/40722] [4.5/4.6 Regression] ia32intrin.h defines of _rotl, _rotr conflict with target stdlib.h decls
- Auto-submitted: auto-generated
- References: <bug-40722-4@http.gcc.gnu.org/bugzilla/>
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.