[llvm] [lllvm] add Passes to LLVM_LINK_COMPONENTS for LLVMMCATests (PR #145617)
Andrew Rogers via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 24 16:58:02 PDT 2025
https://github.com/andrurogerz created https://github.com/llvm/llvm-project/pull/145617
## Purpose
Add `Passes` to `LLVM_LINK_COMPONENTS` for `LLVMMCATests` so that it links properly when LLVM is built as a Windows DLL.
## Background
`LLVPasses` appears to be a missing dependency from `LLVMMCATests`, but when LLVM is built statically it picks-up the required `LLVMPasses` symbols from a transitive dependency (presumably). When LLVM is built as a Windows DLL, `LLVMMCATests` fails to link 4 symbols from `LLVMPasses` without this change:
```
LLVMX86CodeGen.lib(X86CodeGenPassBuilder.cpp.obj) : error LNK2019: unresolved external symbol "public: __cdecl llvm::ModuleInlinerWrapperPass::ModuleInlinerWrapperPass(struct llvm::InlineParams,bool,struct llvm::InlineContext,enum llvm::InliningAdvisorMode,unsigned int)" (??0ModuleInlinerWrapperPass at llvm@@QEAA at UInlineParams@1 at _NUInlineContext@1 at W4InliningAdvisorMode@1 at I@Z) referenced in function "public: void __cdecl llvm::ModuleInlinerWrapperPass::`default constructor closure'(void)" (??_FModuleInlinerWrapperPass at llvm@@QEAAXXZ)
LLVMX86CodeGen.lib(X86CodeGenPassBuilder.cpp.obj) : error LNK2019: unresolved external symbol "public: __cdecl llvm::PipelineTuningOptions::PipelineTuningOptions(void)" (??0PipelineTuningOptions at llvm@@QEAA at XZ) referenced in function "public: void __cdecl llvm::PassBuilder::`default constructor closure'(void)" (??_FPassBuilder at llvm@@QEAAXXZ)
LLVMX86CodeGen.lib(X86CodeGenPassBuilder.cpp.obj) : error LNK2019: unresolved external symbol "public: __cdecl llvm::PassBuilder::PassBuilder(class llvm::TargetMachine *,class llvm::PipelineTuningOptions,class std::optional<struct llvm::PGOOptions>,class llvm::PassInstrumentationCallbacks *)" (??0PassBuilder at llvm@@QEAA at PEAVTargetMachine@1 at VPipelineTuningOptions@1 at V?$optional at UPGOOptions@llvm@@@std@@PEAVPassInstrumentationCallbacks at 1@@Z) referenced in function "public: void __cdecl llvm::PassBuilder::`default constructor closure'(void)" (??_FPassBuilder at llvm@@QEAAXXZ)
LLVMX86CodeGen.lib(X86InsertPrefetch.cpp.obj) : error LNK2019: unresolved external symbol "public: __cdecl llvm::SampleProfileLoaderPass::SampleProfileLoaderPass(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,enum llvm::ThinOrFullLTOPhase,class llvm::IntrusiveRefCntPtr<class llvm::vfs::FileSystem>,bool,bool)" (??0SampleProfileLoaderPass at llvm@@QEAA at V?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@0W4ThinOrFullLTOPhase at 1@V?$IntrusiveRefCntPtr at VFileSystem@vfs at llvm@@@1 at _N3@Z) referenced in function "public: void __cdecl llvm::SampleProfileLoaderPass::`default constructor closure'(void)" (??_FSampleProfileLoaderPass at llvm@@QEAAXXZ)
unittests\tools\llvm-mca\LLVMMCATests.exe : fatal error LNK1120: 4 unresolved externals
```
>From 5422cbe65840c17633215752a90039feb09ebe98 Mon Sep 17 00:00:00 2001
From: Andrew Rogers <andrurogerz at gmail.com>
Date: Tue, 24 Jun 2025 16:45:32 -0700
Subject: [PATCH] add Passes to LLVM_LINK_COMPONENTS for LLVMMCATests
---
llvm/unittests/tools/llvm-mca/CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/llvm/unittests/tools/llvm-mca/CMakeLists.txt b/llvm/unittests/tools/llvm-mca/CMakeLists.txt
index 9c69509b4b54d..26b00f8f1fd73 100644
--- a/llvm/unittests/tools/llvm-mca/CMakeLists.txt
+++ b/llvm/unittests/tools/llvm-mca/CMakeLists.txt
@@ -1,6 +1,7 @@
set(LLVM_LINK_COMPONENTS
MC
MCA
+ Passes
Support
TargetParser
)
More information about the llvm-commits
mailing list