emmintrin <> intrin conflict

rubenvb
2010-04-08
2013-06-06
  • rubenvb

    rubenvb - 2010-04-08

    Hi,

    This is an issue that is still present for eg Qt 4.7. I understand the windows.h/intrin.h include fixes this, but on the other hand, no other toolchain requires that action, making it a mingw-w64 problem. (neither msvc or mingw.org require this).
    The problem is that:

    #include <emmintrin.h>
    

    produces errors about double definitions and different linkage specifications (see Help - Qt 4.7 thread for example), while it shouldn't complain. Fixing this for mingw-w64 would make that:

    #ifdef WIN32
      #include <windows.h>
    #endif // WIN32
    #include <emmintrin.h>
    

    which is at the very least messy. Qt devs seem to not like the patch, and haven't applied it, resulting in a not working sse/sse2 in Qt 4.7. Can something be done about this? There is a thread with a possible fix: https://sourceforge.net/projects/mingw-w64/forums/forum/723797/topic/3635912
    I don't know if that'll help, but it's a start.

     
  • Kai Tietz

    Kai Tietz - 2010-04-08

    Hello rubenvb,

    I see your need, but we can't do here something for you. To compare mingw.org (which doesn't support any MS specific intrinsic and therefore don't have this issue) and VC (which brings up their own intrin-headers) by mingw-w64 is simply like comparing apples and melons. We have to life by gcc's intrin-headers, which are sadly incompatible to MS definitions in first scope.
    So we provide a way things are working by using intrin.h header. If people think that they are more clever and reject this help then they are on their own. Sorry, no way that we re-implement intrin headers for such a thing.

    Kai

     
  • rubenvb

    rubenvb - 2010-04-08

    Ok, understandable that such a double compatibility brings sacrifices. This stuff is way above my head, so forgive my naiveness in these things…

    On the other hand of the equation does lie gcc themselves: http://gcc.gnu.org/ml/gcc-patches/2010-03/msg00033.html
    Has there been any communication beyond the messages in that mailing list thread? They either ask for a test case (which is easy enough) or mean to say there must be something broken in the compiler.

    Thanks for your help!

     
  • rubenvb

    rubenvb - 2010-04-08

    FYI, I got thierry (Qt dev) to apply the ifdef WIN32 patch, and I discovered/fixed the TCHAR weirdness, so all is almost well on the Qt front! Hooray

     
  • Ozkan Sezer

    Ozkan Sezer - 2010-04-08

    > FYI, I got thierry (Qt dev) to apply the ifdef WIN32 patch, and I
    > discovered/fixed the TCHAR weirdness, so all is almost well on
    > the Qt front! Hooray
    >

    Thanks for your hard work Ruben!

     
  • Kai Tietz

    Kai Tietz - 2010-04-08

    \o/ \\o \o/ o// \\o \o/

    :)

     

Log in to post a comment.