enabling float128 support in clang?
- Reply: Alexander Richardson : "Re: enabling float128 support in clang?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 03 Oct 2022 18:43:10 UTC
TL;DR: Is there a reason not to enable float128 support in clang for
x86?
Due to a build breakage with the flang runtime, I recently noticed that
unlike most other OSes we don't support float128 in clang. It's enable
in modern GCC and other OSes have it enable in clang:
- Hakiu 2018: https://reviews.llvm.org/D54901
- Solaris 2018: https://reviews.llvm.org/D41240
- WASM 2019: https://reviews.llvm.org/D57154
- Dragonfly 2021: https://reviews.llvm.org/D111760
- OpenBSD (history hard to find...)
Is there a known reason not to enable this?
Patch to enable below (I'm a bit skeptical of the __FLOAT128__ part as
GCC doesn't define it...)
-- Brooks
diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h
index c75f7d9fbafe..ea95f40e81a0 100644
--- a/clang/lib/Basic/Targets/OSTargets.h
+++ b/clang/lib/Basic/Targets/OSTargets.h
@@ -232,6 +232,9 @@ protected:
// setting this to 1 is conforming even if all the basic source
// character literals have the same encoding as char and wchar_t.
Builder.defineMacro("__STDC_MB_MIGHT_NEQ_WC__", "1");
+
+ if (this->HasFloat128)
+ Builder.defineMacro("__FLOAT128__");
}
public:
@@ -241,6 +244,7 @@ public:
default:
case llvm::Triple::x86:
case llvm::Triple::x86_64:
+ this->HasFloat128 = true;
this->MCountName = ".mcount";
break;
case llvm::Triple::mips: