[clang] [clang][Fuchsia] Factor getFuchsiaDefines out of FuchsiaTargetInfo class (PR #194775)

Roland McGrath via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 28 20:27:39 PDT 2026


https://github.com/frobtech created https://github.com/llvm/llvm-project/pull/194775

Most of the template class's getOSDefines definition is not
template-dependent, so move it to a shared subroutine that's
outside the header file and reused by all the FuchsiaTargetInfo
instantiations.


>From 013f415d206cba733a6435c95544fc1c8abd9c97 Mon Sep 17 00:00:00 2001
From: Roland McGrath <mcgrathr at google.com>
Date: Tue, 28 Apr 2026 20:24:43 -0700
Subject: [PATCH] [clang][Fuchsia] Factor getFuchsiaDefines out of
 FuchsiaTargetInfo class

Most of the template class's getOSDefines definition is not
template-dependent, so move it to a shared subroutine that's
outside the header file and reused by all the FuchsiaTargetInfo
instantiations.
---
 clang/lib/Basic/Targets/OSTargets.cpp | 11 +++++++++++
 clang/lib/Basic/Targets/OSTargets.h   | 11 ++++-------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/clang/lib/Basic/Targets/OSTargets.cpp b/clang/lib/Basic/Targets/OSTargets.cpp
index f847cea5f5bec..08f69bdc4b365 100644
--- a/clang/lib/Basic/Targets/OSTargets.cpp
+++ b/clang/lib/Basic/Targets/OSTargets.cpp
@@ -294,5 +294,16 @@ void addWindowsDefines(const llvm::Triple &Triple, const LangOptions &Opts,
     addVisualCDefines(Opts, Builder);
 }
 
+void getFuchsiaDefines(MacroBuilder &Builder, const LangOptions &Opts,
+                       const llvm::Triple &Triple) {
+  Builder.defineMacro("__Fuchsia__");
+  if (Opts.POSIXThreads)
+    Builder.defineMacro("_REENTRANT");
+  // Required by the libc++ locale support.
+  if (Opts.CPlusPlus)
+    Builder.defineMacro("_GNU_SOURCE");
+  Builder.defineMacro("__Fuchsia_API_level__", Twine(Opts.FuchsiaAPILevel));
+}
+
 } // namespace targets
 } // namespace clang
diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h
index 9e2916eace079..c89104e2cd02b 100644
--- a/clang/lib/Basic/Targets/OSTargets.h
+++ b/clang/lib/Basic/Targets/OSTargets.h
@@ -889,19 +889,16 @@ class LLVM_LIBRARY_VISIBILITY WindowsTargetInfo : public OSTargetInfo<Target> {
   }
 };
 
+void getFuchsiaDefines(MacroBuilder &Builder, const LangOptions &Opts,
+                       const llvm::Triple &Triple);
+
 // Fuchsia Target
 template <typename Target>
 class LLVM_LIBRARY_VISIBILITY FuchsiaTargetInfo : public OSTargetInfo<Target> {
 protected:
   void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
                     MacroBuilder &Builder) const override {
-    Builder.defineMacro("__Fuchsia__");
-    if (Opts.POSIXThreads)
-      Builder.defineMacro("_REENTRANT");
-    // Required by the libc++ locale support.
-    if (Opts.CPlusPlus)
-      Builder.defineMacro("_GNU_SOURCE");
-    Builder.defineMacro("__Fuchsia_API_level__", Twine(Opts.FuchsiaAPILevel));
+    getFuchsiaDefines(Builder, Opts, Triple);
     this->PlatformName = "fuchsia";
     this->PlatformMinVersion = VersionTuple(Opts.FuchsiaAPILevel);
   }



More information about the cfe-commits mailing list