[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
joerg added a comment. Things are different for a libgcc-based toolchain and a compiler-rt based toolchain. Repository: rL LLVM https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
krytarowski added subscribers: joerg, krytarowski. krytarowski added a comment. Does it work for you for 32-bit? @joerg opposed adoption of 32-bit version as it seemed to be unimplemented.. Repository: rL LLVM https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
This revision was automatically updated to reflect the committed changes. Closed by commit rL330572: [Solaris] __float128 is supported on Solaris/x86 (authored by ro, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D41240?vs=127348=143514#toc Repository: rL LLVM https://reviews.llvm.org/D41240 Files: cfe/trunk/lib/Basic/Targets/OSTargets.h cfe/trunk/test/CodeGenCXX/float128-declarations.cpp Index: cfe/trunk/test/CodeGenCXX/float128-declarations.cpp === --- cfe/trunk/test/CodeGenCXX/float128-declarations.cpp +++ cfe/trunk/test/CodeGenCXX/float128-declarations.cpp @@ -12,6 +12,10 @@ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // RUN: %clang_cc1 -emit-llvm -triple amd64-pc-openbsd -std=c++11 \ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple i386-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // /* Various contexts where type __float128 can appear. The different check prefixes are due to different mangling on X86 and different calling Index: cfe/trunk/lib/Basic/Targets/OSTargets.h === --- cfe/trunk/lib/Basic/Targets/OSTargets.h +++ cfe/trunk/lib/Basic/Targets/OSTargets.h @@ -552,12 +552,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} } }; Index: cfe/trunk/test/CodeGenCXX/float128-declarations.cpp === --- cfe/trunk/test/CodeGenCXX/float128-declarations.cpp +++ cfe/trunk/test/CodeGenCXX/float128-declarations.cpp @@ -12,6 +12,10 @@ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // RUN: %clang_cc1 -emit-llvm -triple amd64-pc-openbsd -std=c++11 \ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple i386-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // /* Various contexts where type __float128 can appear. The different check prefixes are due to different mangling on X86 and different calling Index: cfe/trunk/lib/Basic/Targets/OSTargets.h === --- cfe/trunk/lib/Basic/Targets/OSTargets.h +++ cfe/trunk/lib/Basic/Targets/OSTargets.h @@ -552,12 +552,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +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
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
fedor.sergeev accepted this revision. fedor.sergeev added a comment. This revision is now accepted and ready to land. LGTM. Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
rsmith added a comment. @fedor.sergeev Can you review this for correctness? Thanks! Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. ping^3 Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. ping^2 Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. ping Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. I believe there's nothing more left for me here. Is the patch ok now? Thanks. Rainer Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro updated this revision to Diff 127348. ro added a comment. Enables test/CodeGenCXX/float128-declarations.cpp on Solaris/x86, too. Repository: rC Clang https://reviews.llvm.org/D41240 Files: lib/Basic/Targets/OSTargets.h test/CodeGenCXX/float128-declarations.cpp Index: test/CodeGenCXX/float128-declarations.cpp === --- test/CodeGenCXX/float128-declarations.cpp +++ test/CodeGenCXX/float128-declarations.cpp @@ -12,6 +12,10 @@ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // RUN: %clang_cc1 -emit-llvm -triple amd64-pc-openbsd -std=c++11 \ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple i386-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // /* Various contexts where type __float128 can appear. The different check prefixes are due to different mangling on X86 and different calling Index: lib/Basic/Targets/OSTargets.h === --- lib/Basic/Targets/OSTargets.h +++ lib/Basic/Targets/OSTargets.h @@ -545,12 +545,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} } }; Index: test/CodeGenCXX/float128-declarations.cpp === --- test/CodeGenCXX/float128-declarations.cpp +++ test/CodeGenCXX/float128-declarations.cpp @@ -12,6 +12,10 @@ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // RUN: %clang_cc1 -emit-llvm -triple amd64-pc-openbsd -std=c++11 \ // RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple i386-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-pc-solaris2.11 -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 // /* Various contexts where type __float128 can appear. The different check prefixes are due to different mangling on X86 and different calling Index: lib/Basic/Targets/OSTargets.h === --- lib/Basic/Targets/OSTargets.h +++ lib/Basic/Targets/OSTargets.h @@ -545,12 +545,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +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
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. In https://reviews.llvm.org/D41240#955391, @rsmith wrote: > Mechanically, the code change looks fine, but I can't comment on whether this > is a correct change for Solaris, or whether the type provided by `__float128` > would use the right floating-point representation. You will also need to > provide a test for this change. The representation of __float128 is the same on all x86 targets AFAICT (that's certainly how this is done in GCC). I've looked at the tests currently testing __float128 and except for one (to be enabled in a moment) already pass with this patch. Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
rsmith added a comment. Mechanically, the code change looks fine, but I can't comment on whether this is a correct change for Solaris, or whether the type provided by `__float128` would use the right floating-point representation. You will also need to provide a test for this change. Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro added a comment. I forgot: this patch is on top of https://reviews.llvm.org/D35755. Repository: rC Clang https://reviews.llvm.org/D41240 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D41240: [Solaris] __float128 is supported on Solaris/x86
ro created this revision. ro added a reviewer: rsmith. Herald added a subscriber: fedor.sergeev. When rebasing https://reviews.llvm.org/D40898 with GCC 5.4 on Solaris 11.4, I ran into a few instances of In file included from /vol/llvm/src/compiler-rt/local/test/asan/TestCases/Posix/asan-symbolize-sanity-test.cc:19: In file included from /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/string:40: In file included from /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/bits/char_traits.h:39: In file included from /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/bits/stl_algobase.h:64: In file included from /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/bits/stl_pair.h:59: In file included from /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/bits/move.h:57: /usr/gcc/5/lib/gcc/x86_64-pc-solaris2.11/5.4.0/../../../../include/c++/5.4.0/type_traits:311:39: error: __float128 is not supported on this target struct __is_floating_point_helper<__float128> ^ during make check-all. The line above is inside #if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) template<> struct __is_floating_point_helper<__float128> : public true_type { }; #endif While the libstdc++ header indicates support for __float128, clang does not, but should. The following patch implements this and fixed those errors. Repository: rC Clang https://reviews.llvm.org/D41240 Files: lib/Basic/Targets/OSTargets.h Index: lib/Basic/Targets/OSTargets.h === --- lib/Basic/Targets/OSTargets.h +++ lib/Basic/Targets/OSTargets.h @@ -545,12 +545,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +switch (Triple.getArch()) { +default: + break; +case llvm::Triple::x86: +case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; +} } }; Index: lib/Basic/Targets/OSTargets.h === --- lib/Basic/Targets/OSTargets.h +++ lib/Basic/Targets/OSTargets.h @@ -545,12 +545,22 @@ Builder.defineMacro("_LARGEFILE64_SOURCE"); Builder.defineMacro("__EXTENSIONS__"); Builder.defineMacro("_REENTRANT"); +if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: SolarisTargetInfo(const llvm::Triple , const TargetOptions ) : OSTargetInfo(Triple, Opts) { // FIXME: WIntType should be SignedLong +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