enabling float128 support in clang?

From: Brooks Davis <brooks_at_freebsd.org>
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: