<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/152328>152328</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
link errors when building LLVM as a Windows DLL with polly project included
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
andrurogerz
</td>
</tr>
</table>
<pre>
## Overview
When configured to build as a Windows DLL, LLVM does not build successfully when the `polly` project is included.
```
bugpoint.cpp.obj : error LNK2019: unresolved external symbol "struct llvm::PassPluginLibraryInfo __cdecl getPollyPluginInfo(void)" (?getPollyPluginInfo@@YA?AUPassPluginLibraryInfo@llvm@@XZ) referenced in function main
bin\bugpoint.exe : fatal error LNK1120: 1 unresolved externals
```
Fixing this error does not appear to be a simple matter of adding an `LLVM_ABI` annotation to the `getPollyPluginInfo` symbol. It needs further investigation.
## Repro
On Windows 11:
```
git checkout 66d1c37eb69c8ab38af6e61a38b7605f5f05d75b
cmake -B build -S llvm -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;llvm;polly" -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_BUILD_TESTS=ON -DLLVM_BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DCLANG_LINK_CLANG_DYLIB=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_BUILD_LLVM_DYLIB_VIS=ON -DLLVM_LINK_LLVM_DYLIB=ON
ninja -C build
```
Observe build errors.
```
[1773/2053] Linking CXX executable bin\bugpoint.exe
FAILED: bin/bugpoint.exe
C:\WINDOWS\system32\cmd.exe /C "cd . && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=tools\bugpoint\CMakeFiles\bugpoint.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\link.exe /nologo tools\bugpoint\CMakeFiles\bugpoint.dir\BugDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\CrashDebugger.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ExecutionDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ExtractFunction.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\FindBugs.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\Miscompilation.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\OptimizerDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ToolRunner.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\bugpoint.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\__\__\resources\windows_version_resource.rc.res /out:bin\bugpoint.exe /implib:lib\bugpoint.lib /pdb:bin\bugpoint.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console lib\LLVM-22git.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK: command "C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\link.exe /nologo tools\bugpoint\CMakeFiles\bugpoint.dir\BugDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\CrashDebugger.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ExecutionDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ExtractFunction.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\FindBugs.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\Miscompilation.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\OptimizerDriver.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\ToolRunner.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\bugpoint.cpp.obj tools\bugpoint\CMakeFiles\bugpoint.dir\__\__\resources\windows_version_resource.rc.res /out:bin\bugpoint.exe /implib:lib\bugpoint.lib /pdb:bin\bugpoint.pdb /version:0.0 /machine:x64 /STACK:10000000 /INCREMENTAL:NO /subsystem:console lib\LLVM-22git.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=1" failed (exit code 1120) with the following output:
bugpoint.cpp.obj : error LNK2019: unresolved external symbol "struct llvm::PassPluginLibraryInfo __cdecl getPollyPluginInfo(void)" (?getPollyPluginInfo@@YA?AUPassPluginLibraryInfo@llvm@@XZ) referenced in function main
bin\bugpoint.exe : fatal error LNK1120: 1 unresolved externals
```
```
FAILED: bin/clang-cpp.dll lib/clang-cpp.lib
C:\WINDOWS\system32\cmd.exe /C "cd . && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_dll --intdir=tools\clang\tools\clang-shlib\CMakeFiles\clang-cpp.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\link.exe /nologo @CMakeFiles\clang-cpp.rsp /out:bin\clang-cpp.dll /implib:lib\clang-cpp.lib /pdb:bin\clang-cpp.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO -Bsymbolic-functions && cd ."
LINK: command "C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HostX64\x64\link.exe /nologo @CMakeFiles\clang-cpp.rsp /out:bin\clang-cpp.dll /implib:lib\clang-cpp.lib /pdb:bin\clang-cpp.pdb /dll /version:0.0 /machine:x64 /INCREMENTAL:NO -Bsymbolic-functions /MANIFEST:EMBED,ID=2" failed (exit code 1120) with the following output:
LINK : warning LNK4044: unrecognized option '/Bsymbolic-functions'; ignored
Creating library lib\clang-cpp.lib and object lib\clang-cpp.exp
BackendUtil.cpp.obj : error LNK2019: unresolved external symbol "struct llvm::PassPluginLibraryInfo __cdecl getPollyPluginInfo(void)" (?getPollyPluginInfo@@YA?AUPassPluginLibraryInfo@llvm@@XZ) referenced in function "private: void __cdecl `anonymous namespace'::EmitAssemblyHelper::RunOptimizationPipeline(enum clang::BackendAction,class std::unique_ptr<class llvm::raw_pwrite_stream,struct std::default_delete<class llvm::raw_pwrite_stream> > &,class std::unique_ptr<class llvm::ToolOutputFile,struct std::default_delete<class llvm::ToolOutputFile> > &,class clang::BackendConsumer *)" (?RunOptimizationPipeline@EmitAssemblyHelper@?A0xc4eeb055@@AEAAXW4BackendAction@clang@@AEAV?$unique_ptr@Vraw_pwrite_stream@llvm@@U?$default_delete@Vraw_pwrite_stream@llvm@@@std@@@std@@AEAV?$unique_ptr@VToolOutputFile@llvm@@U?$default_delete@VToolOutputFile@llvm@@@std@@@6@PEAVBackendConsumer@4@@Z)
bin\clang-cpp.dll : fatal error LNK1120: 1 unresolved externals
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWVtz46gS_jXkhbILI8mXBz_IsjzrM76kcpvsvriQ1JbZINAB5CT7ML_9FJLsJE6yszOpU2fr7ExlbKChab7-6AbDjOG5BBijYIKC6Rmr7E7pMZOZrrTKQf9xlqjscYyoh6iH13vQew73iIRfdiBxquSW55WGDFuFk4qLDDODGf7CZabuDZ4uFohGeLG4WeJMgcFS2bafqdIUjNlWQjzie6fN7gCjPimVEI-oT3Cp1e-QWswN5jIVVQZZF5HQ_fVJ-0fCpMpLxaXtpmXZVcnvGHkhBq2VxovVZ0p6I9dQSQ1GiT1kGB4saMkENo9FogRGlBqrq9RiIfYF8kLkhefMmHNR5VwueKKZfpzLrcKbTZpBKnAO9twZ2fRwIkSHe8UzREeIUozoEHmzN3r5BPnk1xB5s_D6zSmQT2oj6o63vyE6whq2oEGmkGEu8baSqeVK4oJx6VbPJQqiIwbwAPX6t8wy8YRCr0eJa-69hYM5ARSRcMYfuMyx3XHTKjk6j5UlMF27GzDDhhelAFwwa0FjtcUsy9xQJp0rnd834WTuvMmkVJbVtlt18PUbGPVJ65gunlssATKDt5W2O9CYyz0Yy_NazYELDTUvoNQKkXAtj-Tr9ZwzXy4u5xanO0jvVGVxv5_1Um8ASX-UDlniDdm2D_0e84bJoE-CbbAlQTYIkmaitGB3gDuTlr-dy5ovuPMJr7j8neHOtF5uvAoni3hzfrH-VxxdXSJviihNBZM58ib1d8cqJUwHHqxmyJs0rJs0tKf0oGd9fjVfzn-Lp5srp_BTvELedL06iCfX88V0cxVf1lOctse34fJ8ER9F0TL8HB_G_HoeI296AQKYgaMw2kTr5fl8EV9sFuH1KvolvkDe1KQpS3fPet3efqvfIlx92izmq8-bpjj9dTGfOENms5dG1sWjdPWecHMzf7nEWvfJ4MZFsnFE1LjoNa_XiQG9h9aDNbNN97RbMOkNBh6iM0oCDwVTvODyznE6ur3F8ABpZVkiAL_eem7nhPNFPHV7zYnp7EQcOUYG0Zf5arr-comCyDwaC4VHURClRdbsXzqLXFBKM9zFiPYR7btqO_Rcq1yzAs-4AIOCaMlTrYzaWnzDTcUEvrRVxhUKIkqoUxupoqgkt49tWckBCqL5ND7W4wcL0nAlX-hz4iW7g2ffzYrrfVCvx5E1xnuzEVzebZztnQ6XNuMaedOa5M8AOug5GH5EJuMadzo6Rd70sMaL9aeL8CutkfKiGf3aQ0HUI0cTeoRQSr72uq7poe-jINJptzGgsB9TVNiDIib5Fow1GHc6-KVGp2Y5jy7Wl1_9Z1Cvl8vrVS28iVAQXbUQLC_ras_3Rl97Xc8LjvP_ooy9radtJndAHkgglVC5wt-DIwqiSZVPNd-DPubD71QQaWZ2U0iqPP9xJXG9TbiSH7MldiEytbM26f2omhmX2aTKzY-OX3KTqqLkgn3EinVpecH_AP0xTBypLiopf1zDqxPTd47fbA4f7ixR6bTudN9k3c0etIslm4Osq9OuBuMYrSqLvDePLHTmzhE8QV7oPp-JBU-cuMyS10PLrJa1MyIvJF3iGgqW7rgE5IUPfd81XF6F0WfkhT3S_HNt81V0ES_j1VW4QF64Wrs2UyVNQEZemCpplADc2OPSTYfSnDcW4TvQEoRH61plQLfFPONt6Z5LUyol6orZgTj0VgKeSqyyByUVz-pCqopM5G0ry_asPKhsk4FLDIhSREKXCV2uSVVRMJk9TxM_49TPOPUzTv3T49T_KEzNluFqPosvr5AXxstJPEU0mk-RN-25M-OWcQEuWA3hwV3HVAa4vqHSEb7ndldfDrdKCHXvjt2qsmXtkJ-X_f_CZf9Z-fTu0lxWHdKZEDW_nre5-v_3hcat-o0LTXOXD6IX9Y7ZNRvwRUB6huDPS86fHR6QT94BTpsSn8bkl8R8HZRfkPQ0Kj8J27Dc6vh2dH4ViXFn0oQVnnYOe9X8vU9pfw703xTnd2B-N8vQD2YZ57A6st4zLZ1wsfrsE98_5JZU5ZL_ARlWZR2eER0gOnvDSCfwJpjnUmnIEAkxxpEGZp1S0WQC_BaWjiYqqX_9PhXDQ4lIOGHpHcjs2nLxD8uFiNJS8z2zjjHYTX40D_UJk0o-FqoyWLICTMlSqJ3g1hYX3IbGQJGIx19AlKCb9otKtmfe-tx8zksQjpB0CLIqcPvbrevZoh7WliDqvGIMNjZrxJXk_65gU1qNvFb2hKxm95vyXnMLG2M1sALRqIX_qCCDLauE3WQgwK3vLyjxYlz_d0Hnu-xx4WRdk97Fgh8x5kTDG5a8hi5S0lQFaIxo-II07znBJ2-4zSeOSeQh9QESEgQNbcI4DG-_-C-d5JPGiEOPG-TNEPWfQeOTm9ewPqfjdTPkBI9vDkM-cVi-Kr9nxAmcf8mCPxlzMn0f-eQ8Dm9O_IB84jcd3J47njFPIv9HDpln2djLRt6IncG4Nwh8fxSMqHe2G8OQ9fqUBkHa9_skCcggSAZsMNwmqUcIG5zxMSU0IEPS7wXB0Pe6o34wGoyy4Yj0vYQlQ-QTKBgXXbfqrtL5GTemgnEvoB4dngmWgDD10yalEu5xLXU5OZie6bEb1Emq3DjYuLHmSY3lVsDYpc_2kaB5oKyfDep8sLhZvnrobLJK_Yzz9HTZvlueVVqMd9aWxu0GOkN0lnO7q5JuqgpEZ7Xbmq9OO9alW2evQXTWLmg_pv8JAAD__1KClQE">