[PATCH] D135714: [MemProf] ThinLTO summary support

Teresa Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 16 07:00:24 PST 2022


tejohnson added a comment.

In D135714#3930779 <https://reviews.llvm.org/D135714#3930779>, @tejohnson wrote:

> In D135714#3930308 <https://reviews.llvm.org/D135714#3930308>, @jmorse wrote:
>
>> Hi Teresa,
>>
>> I've reverted this (and Maskray's followup) in rG5d938eb6f <https://reviews.llvm.org/rG5d938eb6f79b16f55266dd23d5df831f552ea082>, as MSVC doesn't seem to be able to link it:
>>
>> https://lab.llvm.org/buildbot/#/builders/123/builds/14137
>>
>>   LLVMAnalysis.lib(ModuleSummaryAnalysis.cpp.obj) : error LNK2019: unresolved external symbol "public: __cdecl llvm::memprof::CallStack<class llvm::MDNode,class llvm::MDOperand const *>::CallStackIterator::CallStackIterator(class llvm::MDNode const *,bool)"
>>   LLVMAnalysis.lib(ModuleSummaryAnalysis.cpp.obj) : error LNK2019: unresolved external symbol "public: unsigned __int64 __cdecl llvm::memprof::CallStack<class llvm::MDNode,class llvm::MDOperand const *>::CallStackIterator::operator*(void)"
>>   bin\llvm-extract.exe : fatal error LNK1120: 2 unresolved externals
>>
>> I'm not completely sure why MSVC is unhappy, but it seems to have something to do with the template specialisation of CallStackIterator's constructor -- a reduced example here https://godbolt.org/z/EoEez3Wo5 doesn't generate any code with MSVC, wheras with clang and gcc it does.
>
> Sorry,  I had missed that bot failure. Hmm, not sure what is wrong with the specialization, but thanks for the reduced example in godbolt, will use that to test a fix.

MSVC is happy if I define the unspecialized primary implementation outside the class: https://godbolt.org/z/h4bd568ba

Will incorporate that change before resubmitting.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135714/new/

https://reviews.llvm.org/D135714



More information about the llvm-commits mailing list