diff options
Diffstat (limited to 'contrib/llvm/lib/Analysis/CGSCCPassManager.cpp')
-rw-r--r-- | contrib/llvm/lib/Analysis/CGSCCPassManager.cpp | 68 |
1 files changed, 10 insertions, 58 deletions
diff --git a/contrib/llvm/lib/Analysis/CGSCCPassManager.cpp b/contrib/llvm/lib/Analysis/CGSCCPassManager.cpp index 4a03002..f6f30bb 100644 --- a/contrib/llvm/lib/Analysis/CGSCCPassManager.cpp +++ b/contrib/llvm/lib/Analysis/CGSCCPassManager.cpp @@ -8,65 +8,17 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/CGSCCPassManager.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/Debug.h" using namespace llvm; -char CGSCCAnalysisManagerModuleProxy::PassID; - -CGSCCAnalysisManagerModuleProxy::Result -CGSCCAnalysisManagerModuleProxy::run(Module &M) { - assert(CGAM->empty() && "CGSCC analyses ran prior to the module proxy!"); - return Result(*CGAM); -} - -CGSCCAnalysisManagerModuleProxy::Result::~Result() { - // Clear out the analysis manager if we're being destroyed -- it means we - // didn't even see an invalidate call when we got invalidated. - CGAM->clear(); -} - -bool CGSCCAnalysisManagerModuleProxy::Result::invalidate( - Module &M, const PreservedAnalyses &PA) { - // If this proxy isn't marked as preserved, then we can't even invalidate - // individual CGSCC analyses, there may be an invalid set of SCC objects in - // the cache making it impossible to incrementally preserve them. - // Just clear the entire manager. - if (!PA.preserved(ID())) - CGAM->clear(); - - // Return false to indicate that this result is still a valid proxy. - return false; -} - -char ModuleAnalysisManagerCGSCCProxy::PassID; - -char FunctionAnalysisManagerCGSCCProxy::PassID; - -FunctionAnalysisManagerCGSCCProxy::Result -FunctionAnalysisManagerCGSCCProxy::run(LazyCallGraph::SCC &C) { - assert(FAM->empty() && "Function analyses ran prior to the CGSCC proxy!"); - return Result(*FAM); -} - -FunctionAnalysisManagerCGSCCProxy::Result::~Result() { - // Clear out the analysis manager if we're being destroyed -- it means we - // didn't even see an invalidate call when we got invalidated. - FAM->clear(); +// Explicit instantiations for the core proxy templates. +namespace llvm { +template class PassManager<LazyCallGraph::SCC>; +template class AnalysisManager<LazyCallGraph::SCC>; +template class InnerAnalysisManagerProxy<CGSCCAnalysisManager, Module>; +template class OuterAnalysisManagerProxy<ModuleAnalysisManager, + LazyCallGraph::SCC>; +template class InnerAnalysisManagerProxy<FunctionAnalysisManager, + LazyCallGraph::SCC>; +template class OuterAnalysisManagerProxy<CGSCCAnalysisManager, Function>; } - -bool FunctionAnalysisManagerCGSCCProxy::Result::invalidate( - LazyCallGraph::SCC &C, const PreservedAnalyses &PA) { - // If this proxy isn't marked as preserved, then we can't even invalidate - // individual function analyses, there may be an invalid set of Function - // objects in the cache making it impossible to incrementally preserve them. - // Just clear the entire manager. - if (!PA.preserved(ID())) - FAM->clear(); - - // Return false to indicate that this result is still a valid proxy. - return false; -} - -char CGSCCAnalysisManagerFunctionProxy::PassID; |