[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski planned changes to this revision. krytarowski added a comment. OK. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
joerg added a comment. Nothing changed. I don't see how catering to the broken libstdc++ self-configuration helps. So no, I still object to this change. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski requested review of this revision. krytarowski added a comment. Herald added a subscriber: llvm-commits. This change happened to be required in downstream usage.. knowing its limits can we merge it as it is? Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski planned changes to this revision. krytarowski added a comment. Rescheduled for future. Maybe I will need to check and improve how good is this i386 __float128 support. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. Joerg declines to take this patch as it is, as there is no compiler-rt support for __float128 on i386 in compiler-rt. GCC knows __float128 on i386, amd64, i64, hppa, powerpc [some variations]; currently I focus on i386/amd64. My proposal was to check if there is used libstdc++, and conditionally enable __float128 for i386/amd64? Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
rnk added a comment. I think there's something wrong with clang's implementation of __float128. It seems fundamentally incompatible with libstdc++'s __is_floating_point_helper mechanism. We can definitely take this patch to unblock things, but we should file a bug about investigating this all the way. This popped up in mingw, I forget elsewhere, and it's wasting peoples' time. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. We can change NetBSD base libstdc++ in `/usr/include/g++/bits/*/c++config.h` from /* Define if __float128 is supported on this host. */ #define _GLIBCXX_USE_FLOAT128 1 to: #if !defined(__clang__) /* Define if __float128 is supported on this host. */ #define _GLIBCXX_USE_FLOAT128 1 #endif Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. We can patch libstdc++ to conditionally enable float128 on NetBSD, this works too. All other systems I'm aware of including cygwin moved to `this->HasFloat128 = true;`. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. In https://reviews.llvm.org/D34018#783218, @joerg wrote: > As I said, I don't see the point in pretending we support float128 when the > runtime doesn't contain the necessary pieces. On the other hand cmake and other packages break now. What's the alternative? Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
joerg added a comment. As I said, I don't see the point in pretending we support float128 when the runtime doesn't contain the necessary pieces. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. ping Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. Is this sufficient as a test: $NetBSD$ --- test/Sema/128bitfloat.cpp.orig2017-05-29 10:06:54.0 + +++ test/Sema/128bitfloat.cpp @@ -4,6 +4,8 @@ // 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 +// RUN: %clang_cc1 -triple i386--netbsd -verify -std=c++11 %s +// RUN: %clang_cc1 -triple x86_64--netbsd -verify -std=c++11 %s #if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) __float128 f; `` Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
joerg added a comment. Soft-float on the runtime environment part. I.e. non-trivial operations are lowered to library calls. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski added a comment. Softfloat on the NetBSD of Clang/LLVM part? Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
joerg added a comment. At the very least, missing test case. I'm mostly ambivalent about this -- I don't really see the point and without matching soft float support it won't fully work either. Repository: rL LLVM https://reviews.llvm.org/D34018 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D34018: Support __float128 on NetBSD libstdc++ x86/x86_64
krytarowski created this revision. This adds support for __float128 from GNU libstdc++ with Clang on NetBSD x86/x86_64 targets. This corrects compilation at least of CMake and probably others like Firefox. In file included from /tmp/pkgsrc-tmp/devel/cmake/work/cmake-3.8.2/Source/kwsys/Directory.cxx:4: In file included from /tmp/pkgsrc-tmp/devel/cmake/work/cmake-3.8.2/Source/cmsys/Directory.hxx:8: In file included from /usr/include/g++/string:40: In file included from /usr/include/g++/bits/char_traits.h:39: In file included from /usr/include/g++/bits/stl_algobase.h:64: In file included from /usr/include/g++/bits/stl_pair.h:59: In file included from /usr/include/g++/bits/move.h:57: /usr/include/g++/type_traits:311:39: error: __float128 is not supported on this target struct __is_floating_point_helper<__float128> ^ Sponsored by Repository: rL LLVM https://reviews.llvm.org/D34018 Files: lib/Basic/Targets.cpp Index: lib/Basic/Targets.cpp === --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -514,6 +514,8 @@ Builder.defineMacro("__ELF__"); if (Opts.POSIXThreads) Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); switch (Triple.getArch()) { default: @@ -530,6 +532,15 @@ NetBSDTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { this->MCountName = "_mcount"; + +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} } }; Index: lib/Basic/Targets.cpp === --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -514,6 +514,8 @@ Builder.defineMacro("__ELF__"); if (Opts.POSIXThreads) Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); switch (Triple.getArch()) { default: @@ -530,6 +532,15 @@ NetBSDTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { this->MCountName = "_mcount"; + +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} } }; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits