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