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@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits