[llvm] [Analysis] Provide inlined `AnalysisKey` in `AnalysisInfoMixin` (PR #116046)
Thomas Fransham via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 14 14:09:17 PST 2024
fsfod wrote:
I should said the issue with the my new DLL build setup not the old existing system that filters exports with a python script, The current changes from this PR doesn't make it any worse or regress the new DLL build setup at least.
The original issue i had was this field wasn't getting imported from a extern explicit template instantiation declaration annotated with dllimport.
The missing symbols were:
```
llvm\lld-link : error : undefined symbol: private: static struct llvm::AnalysisKey llvm::InnerAnalysisManagerProxy<class llvm::AnalysisManager<class llvm::Function>, class llvm::Module>::Key
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(public: __cdecl `anonymous namespace'::CGSCCPassManagerTest::CGSCCPassManagerTest(void))
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(public: virtual class std::unique_ptr<struct llvm::detail::AnalysisResultConcept<class llvm::Module, class llvm::AnalysisManager<class llvm::Module>::Invalidator>, struct std::default_delete<struct llvm::detail::AnalysisResultConcept<class llvm::Module, class llvm::AnalysisManager<class llvm::Module>::Invalidator>>> __cdecl llvm::detail::AnalysisPassModel<class llvm::Module, class llvm::LazyCallGraphAnalysis, class llvm::AnalysisManager<class llvm::Module>::Invalidator>::run(class llvm::Module &, class llvm::AnalysisManager<class llvm::Module> &))
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(private: virtual class llvm::PreservedAnalyses __cdecl std::_Func_impl_no_alloc<class `private: virtual void __cdecl `anonymous namespace'::CGSCCPassManagerTest_TestModulePassInvalidatesSCCAnalysis_Test::TestBody(void)'::`1'::<lambda_18>, class llvm::PreservedAnalyses, class PreservedAnalyses::Module &, class PreservedAnalyses::AnalysisManager<class llvm::Module> &>::_Do_call(class llvm::Module &, class llvm::AnalysisManager<class llvm::Module> &))
>>> referenced 4 more times
lld-link : error : undefined symbol: private: static struct llvm::AnalysisKey llvm::InnerAnalysisManagerProxy<class llvm::AnalysisManager<class llvm::LazyCallGraph::SCC, class llvm::LazyCallGraph &>, class llvm::Module>::Key
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(public: __cdecl `anonymous namespace'::CGSCCPassManagerTest::CGSCCPassManagerTest(void))
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(private: virtual class llvm::PreservedAnalyses __cdecl std::_Func_impl_no_alloc<class `private: virtual void __cdecl `anonymous namespace'::CGSCCPassManagerTest_TestModulePassInvalidatesSCCAnalysis_Test::TestBody(void)'::`1'::<lambda_18>, class llvm::PreservedAnalyses, class PreservedAnalyses::Module &, class PreservedAnalyses::AnalysisManager<class llvm::Module> &>::_Do_call(class llvm::Module &, class llvm::AnalysisManager<class llvm::Module> &))
>>> referenced by unittests\Analysis\CMakeFiles\AnalysisTests.dir\CGSCCPassManagerTest.cpp.obj:(private: virtual class llvm::PreservedAnalyses __cdecl std::_Func_impl_no_alloc<class `private: virtual void __cdecl `anonymous namespace'::CGSCCPassManagerTest_TestModulePassCanPreserveSCCAnalysis_Test::TestBody(void)'::`1'::<lambda_20>, class llvm::PreservedAnalyses, class PreservedAnalyses::Module &,
```
I double checked building with clang-cl 19 and this wasn't fixed so idk if I got confused with some other dllexport bug.
https://github.com/llvm/llvm-project/pull/116046
More information about the llvm-commits
mailing list