https://github.com/seven-mile updated https://github.com/llvm/llvm-project/pull/116090
>From 7b870cc2c3c4201a97ea9ab63197cc79f6ad5370 Mon Sep 17 00:00:00 2001 From: seven-mile <i...@7li.moe> Date: Wed, 13 Nov 2024 18:10:58 +0000 Subject: [PATCH] [Clang][NFC] Refactor target info allocation to make it publicly accessible --- clang/include/clang/Basic/TargetInfo.h | 5 ++++ clang/lib/Basic/TargetDefines.h | 39 ++++++++++++++++++++++++++ clang/lib/Basic/Targets.h | 27 +----------------- 3 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 clang/lib/Basic/TargetDefines.h diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 25eda907d20a7b..71873ee2ca7cb9 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -1860,6 +1860,11 @@ class TargetInfo : public TransferrableTargetInfo, void CheckFixedPointBits() const; }; +namespace targets { +std::unique_ptr<clang::TargetInfo> +AllocateTarget(const llvm::Triple &Triple, const clang::TargetOptions &Opts); +} // namespace targets + } // end namespace clang #endif diff --git a/clang/lib/Basic/TargetDefines.h b/clang/lib/Basic/TargetDefines.h new file mode 100644 index 00000000000000..01db32f6a3d710 --- /dev/null +++ b/clang/lib/Basic/TargetDefines.h @@ -0,0 +1,39 @@ +//===------- TargetDefines.h - Target define helpers ------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file declares a series of helper functions for defining target-specific +// macros. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H +#define LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H + +#include "clang/Basic/LangOptions.h" +#include "clang/Basic/MacroBuilder.h" +#include "llvm/ADT/StringRef.h" + +namespace clang { +namespace targets { +/// DefineStd - Define a macro name and standard variants. For example if +/// MacroName is "unix", then this will define "__unix", "__unix__", and "unix" +/// when in GNU mode. +LLVM_LIBRARY_VISIBILITY +void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName, + const clang::LangOptions &Opts); + +LLVM_LIBRARY_VISIBILITY +void defineCPUMacros(clang::MacroBuilder &Builder, llvm::StringRef CPUName, + bool Tuning = true); + +LLVM_LIBRARY_VISIBILITY +void addCygMingDefines(const clang::LangOptions &Opts, + clang::MacroBuilder &Builder); +} // namespace targets +} // namespace clang +#endif // LLVM_CLANG_LIB_BASIC_TARGETDEFINES_H diff --git a/clang/lib/Basic/Targets.h b/clang/lib/Basic/Targets.h index b4d2486b5d2b13..e1458384fa1c8b 100644 --- a/clang/lib/Basic/Targets.h +++ b/clang/lib/Basic/Targets.h @@ -15,32 +15,7 @@ #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_H #define LLVM_CLANG_LIB_BASIC_TARGETS_H -#include "clang/Basic/LangOptions.h" -#include "clang/Basic/MacroBuilder.h" +#include "TargetDefines.h" #include "clang/Basic/TargetInfo.h" -#include "llvm/ADT/StringRef.h" -namespace clang { -namespace targets { - -LLVM_LIBRARY_VISIBILITY -std::unique_ptr<clang::TargetInfo> -AllocateTarget(const llvm::Triple &Triple, const clang::TargetOptions &Opts); - -/// DefineStd - Define a macro name and standard variants. For example if -/// MacroName is "unix", then this will define "__unix", "__unix__", and "unix" -/// when in GNU mode. -LLVM_LIBRARY_VISIBILITY -void DefineStd(clang::MacroBuilder &Builder, llvm::StringRef MacroName, - const clang::LangOptions &Opts); - -LLVM_LIBRARY_VISIBILITY -void defineCPUMacros(clang::MacroBuilder &Builder, llvm::StringRef CPUName, - bool Tuning = true); - -LLVM_LIBRARY_VISIBILITY -void addCygMingDefines(const clang::LangOptions &Opts, - clang::MacroBuilder &Builder); -} // namespace targets -} // namespace clang #endif // LLVM_CLANG_LIB_BASIC_TARGETS_H _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits