r304012 - Enable __float128 for mingw for GCC compatibility and define __SIZEOF_FLOAT128__ on x86

Martell Malone via cfe-commits cfe-commits at lists.llvm.org
Fri May 26 10:47:27 PDT 2017


Thanks Reid for looking at this today

On Fri, May 26, 2017 at 6:38 PM, Reid Kleckner via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: rnk
> Date: Fri May 26 12:38:15 2017
> New Revision: 304012
>
> URL: http://llvm.org/viewvc/llvm-project?rev=304012&view=rev
> Log:
> Enable __float128 for mingw for GCC compatibility and define
> __SIZEOF_FLOAT128__ on x86
>
> GCC defines __FLOAT128__ on Power and __SIZEOF_FLOAT128__ on x86. We're
> just following the inconsistency for now so users have some way to test.
>
> Effectively merges this patch as requested by Martell Malone:
> https://github.com/Alexpux/MINGW-packages/blob/master/
> mingw-w64-clang/0107-enable-__float128-for-X86-MinGW.patch
>
> Modified:
>     cfe/trunk/lib/Basic/Targets.cpp
>     cfe/trunk/lib/Frontend/InitPreprocessor.cpp
>     cfe/trunk/test/Sema/128bitfloat.cpp
>
> Modified: cfe/trunk/lib/Basic/Targets.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/
> Targets.cpp?rev=304012&r1=304011&r2=304012&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Basic/Targets.cpp (original)
> +++ cfe/trunk/lib/Basic/Targets.cpp Fri May 26 12:38:15 2017
> @@ -4644,7 +4644,9 @@ static void addMinGWDefines(const LangOp
>  class MinGWX86_32TargetInfo : public WindowsX86_32TargetInfo {
>  public:
>    MinGWX86_32TargetInfo(const llvm::Triple &Triple, const TargetOptions
> &Opts)
> -      : WindowsX86_32TargetInfo(Triple, Opts) {}
> +      : WindowsX86_32TargetInfo(Triple, Opts) {
> +    HasFloat128 = true;
> +  }
>    void getTargetDefines(const LangOptions &Opts,
>                          MacroBuilder &Builder) const override {
>      WindowsX86_32TargetInfo::getTargetDefines(Opts, Builder);
> @@ -4936,6 +4938,7 @@ public:
>      // with x86 FP ops. Weird.
>      LongDoubleWidth = LongDoubleAlign = 128;
>      LongDoubleFormat = &llvm::APFloat::x87DoubleExtended();
> +    HasFloat128 = true;
>    }
>
>    void getTargetDefines(const LangOptions &Opts,
>
> Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/
> Frontend/InitPreprocessor.cpp?rev=304012&r1=304011&r2=304012&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
> +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Fri May 26 12:38:15 2017
> @@ -750,6 +750,8 @@ static void InitializePredefinedMacros(c
>                     TI.getTypeWidth(TI.getWIntType()), TI, Builder);
>    if (TI.hasInt128Type())
>      DefineTypeSizeof("__SIZEOF_INT128__", 128, TI, Builder);
> +  if (TI.hasFloat128Type())
> +    DefineTypeSizeof("__SIZEOF_FLOAT128__", 128, TI, Builder);
>
>    DefineType("__INTMAX_TYPE__", TI.getIntMaxType(), Builder);
>    DefineFmt("__INTMAX", TI.getIntMaxType(), TI, Builder);
>
> Modified: cfe/trunk/test/Sema/128bitfloat.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/
> 128bitfloat.cpp?rev=304012&r1=304011&r2=304012&view=diff
> ============================================================
> ==================
> --- cfe/trunk/test/Sema/128bitfloat.cpp (original)
> +++ cfe/trunk/test/Sema/128bitfloat.cpp Fri May 26 12:38:15 2017
> @@ -1,7 +1,11 @@
> -// RUN: %clang_cc1 -fsyntax-only -verify -std=gnu++11 %s
> -// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
> +// RUN: %clang_cc1 -verify -std=gnu++11 %s
> +// RUN: %clang_cc1 -verify -std=c++11 %s
> +// RUN: %clang_cc1 -triple powerpc64-linux -verify -std=c++11 %s
> +// RUN: %clang_cc1 -triple i686-windows-gnu -verify -std=c++11 %s
> +// RUN: %clang_cc1 -triple x86_64-windows-gnu -verify -std=c++11 %s
> +// RUN: %clang_cc1 -triple x86_64-windows-msvc -verify -std=c++11 %s
>
> -#ifdef __FLOAT128__
> +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
>  __float128 f;
>  template<typename> struct __is_floating_point_helper {};
>  template<> struct __is_floating_point_helper<__float128> {};
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170526/1558deae/attachment-0001.html>


More information about the cfe-commits mailing list