clang and __float128 bug/error

前端 未结 4 1771
迷失自我
迷失自我 2021-02-07 11:29

I\'ve successfully compiled the current 3.3 branch of clang. But then C++ compilation of any file fails with the bug/error. Can that be fixed?

In file included f         


        
相关标签:
4条回答
  • 2021-02-07 11:54

    The solution is to have this declaration. It works like a charm:

    #ifdef __clang__
    typedef struct { long double x, y; } __float128;
    #endif
    

    Solutions with #define don't work because of the template specification redeclaration error.

    Of course this is a hack, and you must be safe. I want clang just for a few experiments, so it won't cause any troubles.

    0 讨论(0)
  • 2021-02-07 11:55

    I don't think clang supports __float128. It may be the same type as long double (which is 16 bytes in clang) so it may be a simple case of inserting:

    #define __float128 long double
    

    or:

    typedef long double __float128;
    

    somewhere early in your include chain.

    I'm not guaranteeing that will work but it may, and it's probably best to try it out rather than wait until clang starts supporting more gcc extensions.

    Either that, or switch to gcc, if that's an option. I'm pretty certain that gcc supports all of the gcc extensions :-)

    0 讨论(0)
  • 2021-02-07 12:01

    See http://llvm.org/bugs/show_bug.cgi?id=13530#c3 for possible workarounds.

    0 讨论(0)
  • You can fix it with:

    CXXFLAGS+="-D__STRICT_ANSI__"
    
    0 讨论(0)
提交回复
热议问题