<div dir="ltr">Chandler,<div><br></div><div>I am confused what were correct.</div><div><br></div><div>Before r<span style="color:rgb(33,33,33)">293017, they are instantiated explicitly,</span></div><div><font color="#212121"> llvm::OuterAnalysisManagerProxy<llvm::AnalysisManager<llvm::Module>, llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Key</font><br></div><div><font color="#212121"> llvm::OuterAnalysisManagerProxy<llvm::AnalysisManager<llvm::Function>, llvm::Loop, llvm::LoopStandardAnalysisResults&>::Key<br></font></div><div><br></div><div>They are not referred outside of libLLVMAnalysis.so.</div><div>Besides, linking can be done successfully even if their instantiations (in Analysis/*.cpp) are pruned.</div><div><br></div><div>I am dubious it would be correct.</div><div>I have confirmed on x86_64-linux with clang++-trunk, BUILD_SHARED_LIBS=ON.</div><div><br></div><div>I just would like to instantiate OuterAnalysisManagerProxy::Key explicitly.</div><div>Let me know if you have better idea. Just reverting would make things worse.</div><div><br></div><div>FYI, failure log is here; <a href="http://bb.pgr.jp/builders/ninja-clang-x64-mingw64-RA/builds/15409">http://bb.pgr.jp/builders/ninja-clang-x64-mingw64-RA/builds/15409</a></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Jan 30, 2017 at 8:05 AM Chandler Carruth <<a href="mailto:chandlerc@gmail.com">chandlerc@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr" class="gmail_msg">This change is not correct at all. Please revert as it causes other platforms to no longer have the necessary extern template declaration. What failure are you trying to address?</p>
<br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Sun, Jan 29, 2017, 14:03 NAKAMURA Takumi <<a href="mailto:geek4civic@gmail.com" class="gmail_msg" target="_blank">geek4civic@gmail.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hans, could you pull this into 4.0, please?<br class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">2017年1月25日(水) 13:37 NAKAMURA Takumi via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>>:<br class="gmail_msg"></div></div><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: chapuni<br class="gmail_msg">
Date: Tue Jan 24 22:26:29 2017<br class="gmail_msg">
New Revision: 293017<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=293017&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=293017&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
Rewind instantiations of OuterAnalysisManagerProxy in r289317, r291651, and r291662.<br class="gmail_msg">
<br class="gmail_msg">
I found root class should be instantiated for variadic tempate to instantiate static member explicitly.<br class="gmail_msg">
<br class="gmail_msg">
This will fix failures in mingw DLL build.<br class="gmail_msg">
<br class="gmail_msg">
Modified:<br class="gmail_msg">
llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h<br class="gmail_msg">
llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h<br class="gmail_msg">
llvm/trunk/lib/Analysis/CGSCCPassManager.cpp<br class="gmail_msg">
llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h?rev=293017&r1=293016&r2=293017&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h?rev=293017&r1=293016&r2=293017&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h (original)<br class="gmail_msg">
+++ llvm/trunk/include/llvm/Analysis/CGSCCPassManager.h Tue Jan 24 22:26:29 2017<br class="gmail_msg">
@@ -191,8 +191,8 @@ CGSCCAnalysisManagerModuleProxy::run(Mod<br class="gmail_msg">
// template.<br class="gmail_msg">
extern template class InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>;<br class="gmail_msg">
<br class="gmail_msg">
-extern template class OuterAnalysisManagerProxy<<br class="gmail_msg">
- ModuleAnalysisManager, LazyCallGraph::SCC, LazyCallGraph &>;<br class="gmail_msg">
+extern template class OuterAnalysisManagerProxy<ModuleAnalysisManager,<br class="gmail_msg">
+ LazyCallGraph::SCC>;<br class="gmail_msg">
/// A proxy from a \c ModuleAnalysisManager to an \c SCC.<br class="gmail_msg">
typedef OuterAnalysisManagerProxy<ModuleAnalysisManager, LazyCallGraph::SCC,<br class="gmail_msg">
LazyCallGraph &><br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h?rev=293017&r1=293016&r2=293017&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h?rev=293017&r1=293016&r2=293017&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h (original)<br class="gmail_msg">
+++ llvm/trunk/include/llvm/Analysis/LoopAnalysisManager.h Tue Jan 24 22:26:29 2017<br class="gmail_msg">
@@ -141,8 +141,7 @@ LoopAnalysisManagerFunctionProxy::run(Fu<br class="gmail_msg">
// template.<br class="gmail_msg">
extern template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;<br class="gmail_msg">
<br class="gmail_msg">
-extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,<br class="gmail_msg">
- LoopStandardAnalysisResults &>;<br class="gmail_msg">
+extern template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;<br class="gmail_msg">
/// A proxy from a \c FunctionAnalysisManager to a \c Loop.<br class="gmail_msg">
typedef OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,<br class="gmail_msg">
LoopStandardAnalysisResults &><br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/Analysis/CGSCCPassManager.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/CGSCCPassManager.cpp?rev=293017&r1=293016&r2=293017&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/CGSCCPassManager.cpp?rev=293017&r1=293016&r2=293017&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Analysis/CGSCCPassManager.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/Analysis/CGSCCPassManager.cpp Tue Jan 24 22:26:29 2017<br class="gmail_msg">
@@ -24,7 +24,7 @@ template class PassManager<LazyCallGraph<br class="gmail_msg">
LazyCallGraph &, CGSCCUpdateResult &>;<br class="gmail_msg">
template class InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>;<br class="gmail_msg">
template class OuterAnalysisManagerProxy<ModuleAnalysisManager,<br class="gmail_msg">
- LazyCallGraph::SCC, LazyCallGraph &>;<br class="gmail_msg">
+ LazyCallGraph::SCC>;<br class="gmail_msg">
template class OuterAnalysisManagerProxy<CGSCCAnalysisManager, Function>;<br class="gmail_msg">
<br class="gmail_msg">
/// Explicitly specialize the pass manager run method to handle call graph<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp?rev=293017&r1=293016&r2=293017&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp?rev=293017&r1=293016&r2=293017&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/Analysis/LoopAnalysisManager.cpp Tue Jan 24 22:26:29 2017<br class="gmail_msg">
@@ -23,8 +23,7 @@ namespace llvm {<br class="gmail_msg">
template class AllAnalysesOn<Loop>;<br class="gmail_msg">
template class AnalysisManager<Loop, LoopStandardAnalysisResults &>;<br class="gmail_msg">
template class InnerAnalysisManagerProxy<LoopAnalysisManager, Function>;<br class="gmail_msg">
-template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop,<br class="gmail_msg">
- LoopStandardAnalysisResults &>;<br class="gmail_msg">
+template class OuterAnalysisManagerProxy<FunctionAnalysisManager, Loop>;<br class="gmail_msg">
<br class="gmail_msg">
bool LoopAnalysisManagerFunctionProxy::Result::invalidate(<br class="gmail_msg">
Function &F, const PreservedAnalyses &PA,<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div>
</blockquote></div>
</blockquote></div>