Skip to content

Commit 04caadc

Browse files
brad0tru
authored andcommitted
[Driver] Enable __float128 support on X86 on FreeBSD / NetBSD (#72788)
(cherry picked from commit 23c47eb)
1 parent e919a83 commit 04caadc

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ class LLVM_LIBRARY_VISIBILITY FreeBSDTargetInfo : public OSTargetInfo<Target> {
217217
Builder.defineMacro("__FreeBSD_cc_version", Twine(CCVersion));
218218
Builder.defineMacro("__KPRINTF_ATTRIBUTE__");
219219
DefineStd(Builder, "unix", Opts);
220+
if (this->HasFloat128)
221+
Builder.defineMacro("__FLOAT128__");
220222

221223
// On FreeBSD, wchar_t contains the number of the code point as
222224
// used by the character set of the locale. These character sets are
@@ -234,9 +236,11 @@ class LLVM_LIBRARY_VISIBILITY FreeBSDTargetInfo : public OSTargetInfo<Target> {
234236
FreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
235237
: OSTargetInfo<Target>(Triple, Opts) {
236238
switch (Triple.getArch()) {
237-
default:
238239
case llvm::Triple::x86:
239240
case llvm::Triple::x86_64:
241+
this->HasFloat128 = true;
242+
[[fallthrough]];
243+
default:
240244
this->MCountName = ".mcount";
241245
break;
242246
case llvm::Triple::mips:
@@ -425,12 +429,22 @@ class LLVM_LIBRARY_VISIBILITY NetBSDTargetInfo : public OSTargetInfo<Target> {
425429
Builder.defineMacro("__unix__");
426430
if (Opts.POSIXThreads)
427431
Builder.defineMacro("_REENTRANT");
432+
if (this->HasFloat128)
433+
Builder.defineMacro("__FLOAT128__");
428434
}
429435

430436
public:
431437
NetBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
432438
: OSTargetInfo<Target>(Triple, Opts) {
433439
this->MCountName = "__mcount";
440+
switch (Triple.getArch()) {
441+
default:
442+
break;
443+
case llvm::Triple::x86:
444+
case llvm::Triple::x86_64:
445+
this->HasFloat128 = true;
446+
break;
447+
}
434448
}
435449
};
436450

clang/test/CodeGenCXX/float128-declarations.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@
66
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
77
// RUN: %clang_cc1 -emit-llvm -triple x86_64-unknown-linux-gnu -std=c++11 \
88
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
9-
// RUN: %clang_cc1 -emit-llvm -triple i686-pc-openbsd -std=c++11 \
9+
// RUN: %clang_cc1 -emit-llvm -triple i386-unknown-freebsd -std=c++11 \
1010
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
11-
// RUN: %clang_cc1 -emit-llvm -triple amd64-pc-openbsd -std=c++11 \
11+
// RUN: %clang_cc1 -emit-llvm -triple amd64-unknown-freebsd -std=c++11 \
12+
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
13+
// RUN: %clang_cc1 -emit-llvm -triple i386-unknown-netbsd -std=c++11 \
14+
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
15+
// RUN: %clang_cc1 -emit-llvm -triple amd64-unknown-netbsd -std=c++11 \
16+
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
17+
// RUN: %clang_cc1 -emit-llvm -triple i386-unknown-openbsd -std=c++11 \
18+
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
19+
// RUN: %clang_cc1 -emit-llvm -triple amd64-unknown-openbsd -std=c++11 \
1220
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86
1321
// RUN: %clang_cc1 -emit-llvm -triple i386-pc-solaris2.11 -std=c++11 \
1422
// RUN: %s -o - | FileCheck %s -check-prefix=CHECK-X86

0 commit comments

Comments
 (0)