From 95f99e9211321b22e047e4f73d80b5d29d519b38 Mon Sep 17 00:00:00 2001 From: Kristina Brooks Date: Wed, 5 Dec 2018 15:05:06 +0000 Subject: [PATCH] [Haiku] Support __float128 for x86 and x86_64 This patch addresses a compilation error with clang when running in Haiku being unable to compile code using float128 (throws compilation error such as 'float128 is not supported on this target'). Patch by kallisti5 (Alexander von Gluck IV) Differential Revision: https://reviews.llvm.org/D54901 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@348368 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets/OSTargets.h | 10 ++++++++++ test/CodeGenCXX/float128-declarations.cpp | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/lib/Basic/Targets/OSTargets.h b/lib/Basic/Targets/OSTargets.h index 4a2aec8431..5510ca3698 100644 --- a/lib/Basic/Targets/OSTargets.h +++ b/lib/Basic/Targets/OSTargets.h @@ -257,6 +257,8 @@ protected: Builder.defineMacro("__HAIKU__"); Builder.defineMacro("__ELF__"); DefineStd(Builder, "unix", Opts); + if (this->HasFloat128) + Builder.defineMacro("__FLOAT128__"); } public: @@ -267,6 +269,14 @@ public: this->PtrDiffType = TargetInfo::SignedLong; this->ProcessIDType = TargetInfo::SignedLong; this->TLSSupported = false; + switch (Triple.getArch()) { + default: + break; + case llvm::Triple::x86: + case llvm::Triple::x86_64: + this->HasFloat128 = true; + break; + } } }; diff --git a/test/CodeGenCXX/float128-declarations.cpp b/test/CodeGenCXX/float128-declarations.cpp index fca77ddb6b..18a25d9fab 100644 --- a/test/CodeGenCXX/float128-declarations.cpp +++ b/test/CodeGenCXX/float128-declarations.cpp @@ -14,6 +14,10 @@ // 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 +// RUN: %clang_cc1 -emit-llvm -triple i586-pc-haiku -std=c++11 \ +// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86 +// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-haiku -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. */ -- 2.50.1