https://github.com/yamt updated https://github.com/llvm/llvm-project/pull/187923
>From 0f7ec6a82cb25f8c255a0bf4c8b72fd7aa63c596 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi <[email protected]> Date: Sun, 22 Mar 2026 06:18:14 +0000 Subject: [PATCH] [Driver] Add LTO support for NetBSD Basically copy-and-paste from FreeBSD/OpenBSD. Note: as system /usr/bin/ld is not threaded, LLVMgold.so fails if it attempts to create threads. i couldn't find a way to suppress the use of threads. -fuse-ld=lld works. --- clang/lib/Driver/ToolChains/NetBSD.cpp | 6 ++++++ clang/lib/Driver/ToolChains/NetBSD.h | 1 + clang/test/Driver/netbsd.c | 5 +++++ clang/test/Driver/save-stats.c | 2 ++ 4 files changed, 14 insertions(+) diff --git a/clang/lib/Driver/ToolChains/NetBSD.cpp b/clang/lib/Driver/ToolChains/NetBSD.cpp index ea722b59853d6..56a42710106fe 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.cpp +++ b/clang/lib/Driver/ToolChains/NetBSD.cpp @@ -274,6 +274,10 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_s, options::OPT_t}); ToolChain.AddFilePathLibArgs(Args, CmdArgs); + if (D.isUsingLTO()) + addLTOOptions(ToolChain, Args, CmdArgs, Output, Inputs, + D.getLTOMode() == LTOK_Thin); + bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs); AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA); @@ -437,6 +441,8 @@ Tool *NetBSD::buildAssembler() const { Tool *NetBSD::buildLinker() const { return new tools::netbsd::Linker(*this); } +bool NetBSD::HasNativeLLVMSupport() const { return true; } + ToolChain::CXXStdlibType NetBSD::GetDefaultCXXStdlibType() const { switch (getArch()) { case llvm::Triple::aarch64: diff --git a/clang/lib/Driver/ToolChains/NetBSD.h b/clang/lib/Driver/ToolChains/NetBSD.h index 96303acaa0099..45848e06abef5 100644 --- a/clang/lib/Driver/ToolChains/NetBSD.h +++ b/clang/lib/Driver/ToolChains/NetBSD.h @@ -52,6 +52,7 @@ class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF { public: NetBSD(const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args); + bool HasNativeLLVMSupport() const override; bool IsMathErrnoDefault() const override { return false; } bool IsObjCNonFragileABIDefault() const override { return true; } diff --git a/clang/test/Driver/netbsd.c b/clang/test/Driver/netbsd.c index 8404bb6bbd528..a8c682ac9f8cc 100644 --- a/clang/test/Driver/netbsd.c +++ b/clang/test/Driver/netbsd.c @@ -338,3 +338,8 @@ // RUN: %clang --target=riscv64-unknown-netbsd -mno-relax -### %s 2>&1 \ // RUN: | FileCheck -check-prefix=RISCV-FLAGS %s // RISCV-FLAGS: "-X" "--no-relax" + +// Check passing LTO flags to the linker +// RUN: %clang --target=amd64-unknown-netbsd -flto -### %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-LTO-FLAGS %s +// CHECK-LTO-FLAGS: "-plugin-opt=mcpu=x86-64" diff --git a/clang/test/Driver/save-stats.c b/clang/test/Driver/save-stats.c index ad7867a991686..312e0161dd22a 100644 --- a/clang/test/Driver/save-stats.c +++ b/clang/test/Driver/save-stats.c @@ -24,6 +24,8 @@ // RUN: %clang --target=x86_64-unknown-linux -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO // RUN: %clang --target=x86_64-unknown-freebsd -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO // RUN: %clang --target=x86_64-unknown-freebsd -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO +// RUN: %clang --target=x86_64-unknown-netbsd -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO +// RUN: %clang --target=x86_64-unknown-netbsd -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO // RUN: %clang --target=x86_64-unknown-openbsd -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO // RUN: %clang --target=x86_64-unknown-openbsd -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO // RUN: %clang --target=x86_64-unknown-fuchsia -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
