https://github.com/brad0 updated https://github.com/llvm/llvm-project/pull/157241
>From 4e2f4778df068d94655795b8b604349931d06751 Mon Sep 17 00:00:00 2001 From: Brad Smith <b...@comstyle.com> Date: Sat, 6 Sep 2025 03:43:30 -0400 Subject: [PATCH] [AArch64] Enable out-of-line atomics by default --- clang/include/clang/Driver/ToolChain.h | 6 ------ clang/lib/Driver/ToolChains/CommonArgs.cpp | 2 +- clang/lib/Driver/ToolChains/Fuchsia.h | 5 ----- clang/lib/Driver/ToolChains/Haiku.h | 5 ----- clang/lib/Driver/ToolChains/Linux.cpp | 13 ------------- clang/lib/Driver/ToolChains/Linux.h | 1 - clang/lib/Driver/ToolChains/Managarm.h | 5 ----- clang/lib/Driver/ToolChains/OpenBSD.h | 5 ----- 8 files changed, 1 insertion(+), 41 deletions(-) diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index 1425714d34110..b5943317fc243 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -564,12 +564,6 @@ class ToolChain { virtual UnwindTableLevel getDefaultUnwindTableLevel(const llvm::opt::ArgList &Args) const; - /// Test whether this toolchain supports outline atomics by default. - virtual bool - IsAArch64OutlineAtomicsDefault(const llvm::opt::ArgList &Args) const { - return false; - } - /// Test whether this toolchain defaults to PIC. virtual bool isPICDefault() const = 0; diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 299422328aecf..809bf8db357c5 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -3054,7 +3054,7 @@ void tools::addOutlineAtomicsArgs(const Driver &D, const ToolChain &TC, CmdArgs.push_back("-outline-atomics"); } } - } else if (Triple.isAArch64() && TC.IsAArch64OutlineAtomicsDefault(Args)) { + } else if (Triple.isAArch64()) { CmdArgs.push_back("-target-feature"); CmdArgs.push_back("+outline-atomics"); } diff --git a/clang/lib/Driver/ToolChains/Fuchsia.h b/clang/lib/Driver/ToolChains/Fuchsia.h index 619968f585024..fd9a317a7b5d2 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.h +++ b/clang/lib/Driver/ToolChains/Fuchsia.h @@ -90,11 +90,6 @@ class LLVM_LIBRARY_VISIBILITY Fuchsia : public ToolChain { GetRuntimeLibType(const llvm::opt::ArgList &Args) const override; CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; - bool IsAArch64OutlineAtomicsDefault( - const llvm::opt::ArgList &Args) const override { - return true; - } - void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, diff --git a/clang/lib/Driver/ToolChains/Haiku.h b/clang/lib/Driver/ToolChains/Haiku.h index b4b14cf0aeb99..edebf5c49187b 100644 --- a/clang/lib/Driver/ToolChains/Haiku.h +++ b/clang/lib/Driver/ToolChains/Haiku.h @@ -56,11 +56,6 @@ class LLVM_LIBRARY_VISIBILITY Haiku : public Generic_ELF { const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - bool IsAArch64OutlineAtomicsDefault( - const llvm::opt::ArgList &Args) const override { - return true; - } - SanitizerMask getSupportedSanitizers() const override; unsigned GetDefaultDwarfVersion() const override { return 4; } diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index 16e35b08cfbd6..944e8f08d8859 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -772,19 +772,6 @@ bool Linux::isPIEDefault(const llvm::opt::ArgList &Args) const { getTriple().isMusl() || getSanitizerArgs(Args).requiresPIE(); } -bool Linux::IsAArch64OutlineAtomicsDefault(const ArgList &Args) const { - // Outline atomics for AArch64 are supported by compiler-rt - // and libgcc since 9.3.1 - assert(getTriple().isAArch64() && "expected AArch64 target!"); - ToolChain::RuntimeLibType RtLib = GetRuntimeLibType(Args); - if (RtLib == ToolChain::RLT_CompilerRT) - return true; - assert(RtLib == ToolChain::RLT_Libgcc && "unexpected runtime library type!"); - if (GCCInstallation.getVersion().isOlderThan(9, 3, 1)) - return false; - return true; -} - bool Linux::IsMathErrnoDefault() const { if (getTriple().isAndroid() || getTriple().isMusl()) return false; diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h index 2eb2d05786fe3..14a6e9e87b445 100644 --- a/clang/lib/Driver/ToolChains/Linux.h +++ b/clang/lib/Driver/ToolChains/Linux.h @@ -47,7 +47,6 @@ class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF { unsigned GetDefaultDwarfVersion() const override; CXXStdlibType GetDefaultCXXStdlibType() const override; bool - IsAArch64OutlineAtomicsDefault(const llvm::opt::ArgList &Args) const override; bool isPIEDefault(const llvm::opt::ArgList &Args) const override; bool IsMathErrnoDefault() const override; SanitizerMask getSupportedSanitizers() const override; diff --git a/clang/lib/Driver/ToolChains/Managarm.h b/clang/lib/Driver/ToolChains/Managarm.h index 408c0589a3138..326197eb52bb7 100644 --- a/clang/lib/Driver/ToolChains/Managarm.h +++ b/clang/lib/Driver/ToolChains/Managarm.h @@ -35,11 +35,6 @@ class LLVM_LIBRARY_VISIBILITY Managarm : public Generic_ELF { addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - bool IsAArch64OutlineAtomicsDefault( - const llvm::opt::ArgList &Args) const override { - return true; - } - SanitizerMask getSupportedSanitizers() const override; std::string computeSysRoot() const override; diff --git a/clang/lib/Driver/ToolChains/OpenBSD.h b/clang/lib/Driver/ToolChains/OpenBSD.h index ad0f9e6799568..11b873cb30032 100644 --- a/clang/lib/Driver/ToolChains/OpenBSD.h +++ b/clang/lib/Driver/ToolChains/OpenBSD.h @@ -79,11 +79,6 @@ class LLVM_LIBRARY_VISIBILITY OpenBSD : public Generic_ELF { void AddCXXStdlibLibArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override; - bool IsAArch64OutlineAtomicsDefault( - const llvm::opt::ArgList &Args) const override { - return true; - } - std::string getCompilerRT(const llvm::opt::ArgList &Args, StringRef Component, FileType Type = ToolChain::FT_Static, bool IsFortran = false) const override; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits