diff options
| author | Chandler Carruth <chandlerc@gmail.com> | 2016-02-26 11:44:45 +0000 |
|---|---|---|
| committer | Chandler Carruth <chandlerc@gmail.com> | 2016-02-26 11:44:45 +0000 |
| commit | 3a6343555180817fe1f533a60e66b0e4db465e46 (patch) | |
| tree | b5c40db2a6e046ae4d71a83a06a4f591233ba90f /llvm/lib/Analysis | |
| parent | 6456376fe94dcf4df5f2b946c1806fe579f9e414 (diff) | |
| download | bcm5719-llvm-3a6343555180817fe1f533a60e66b0e4db465e46.tar.gz bcm5719-llvm-3a6343555180817fe1f533a60e66b0e4db465e46.zip | |
[PM] Introduce CRTP mixin base classes to help define passes and
analyses in the new pass manager.
These just handle really basic stuff: turning a type name into a string
statically that is nice to print in logs, and getting a static unique ID
for each analysis.
Sadly, the format of passes in anonymous namespaces makes using their
names in tests really annoying so I've customized the names of the no-op
passes to keep tests sane to read.
This is the first of a few simplifying refactorings for the new pass
manager that should reduce boilerplate and confusion.
llvm-svn: 262004
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/AliasAnalysis.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/Analysis/AssumptionCache.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/CFLAliasAnalysis.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/CGSCCPassManager.cpp | 8 | ||||
| -rw-r--r-- | llvm/lib/Analysis/CallGraph.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/DominanceFrontier.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/GlobalsModRef.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/LazyCallGraph.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/LoopInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/LoopPassManager.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/PostDominators.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/RegionInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/ScopedNoAliasAA.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/TargetLibraryInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/TargetTransformInfo.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp | 2 |
20 files changed, 0 insertions, 49 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index 937841f206f..a30aedc4060 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -390,9 +390,6 @@ bool AAResults::canInstructionRangeModRef(const Instruction &I1, // Provide a definition for the root virtual destructor. AAResults::Concept::~Concept() {} -// Provide a definition for the static object used to identify passes. -char AAManager::PassID; - namespace { /// A wrapper pass for external alias analyses. This just squirrels away the /// callback used to run any analyses and register their results. diff --git a/llvm/lib/Analysis/AssumptionCache.cpp b/llvm/lib/Analysis/AssumptionCache.cpp index f468a43ef0b..6af2dc12d06 100644 --- a/llvm/lib/Analysis/AssumptionCache.cpp +++ b/llvm/lib/Analysis/AssumptionCache.cpp @@ -74,8 +74,6 @@ void AssumptionCache::registerAssumption(CallInst *CI) { #endif } -char AssumptionAnalysis::PassID; - PreservedAnalyses AssumptionPrinterPass::run(Function &F, AnalysisManager<Function> *AM) { AssumptionCache &AC = AM->getResult<AssumptionAnalysis>(F); diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 74aae76793c..58aa670d387 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -1586,8 +1586,6 @@ bool BasicAAResult::constantOffsetHeuristic( // BasicAliasAnalysis Pass //===----------------------------------------------------------------------===// -char BasicAA::PassID; - BasicAAResult BasicAA::run(Function &F, AnalysisManager<Function> *AM) { return BasicAAResult(F.getParent()->getDataLayout(), AM->getResult<TargetLibraryAnalysis>(F), diff --git a/llvm/lib/Analysis/CFLAliasAnalysis.cpp b/llvm/lib/Analysis/CFLAliasAnalysis.cpp index 969147621e8..9dc74e4eed4 100644 --- a/llvm/lib/Analysis/CFLAliasAnalysis.cpp +++ b/llvm/lib/Analysis/CFLAliasAnalysis.cpp @@ -1093,8 +1093,6 @@ CFLAAResult CFLAA::run(Function &F, AnalysisManager<Function> *AM) { return CFLAAResult(AM->getResult<TargetLibraryAnalysis>(F)); } -char CFLAA::PassID; - char CFLAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(CFLAAWrapperPass, "cfl-aa", "CFL-Based Alias Analysis", false, true) diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp index efffc8e4eba..69c37f57528 100644 --- a/llvm/lib/Analysis/CGSCCPassManager.cpp +++ b/llvm/lib/Analysis/CGSCCPassManager.cpp @@ -13,8 +13,6 @@ using namespace llvm; -char CGSCCAnalysisManagerModuleProxy::PassID; - CGSCCAnalysisManagerModuleProxy::Result CGSCCAnalysisManagerModuleProxy::run(Module &M) { assert(CGAM->empty() && "CGSCC analyses ran prior to the module proxy!"); @@ -44,10 +42,6 @@ bool CGSCCAnalysisManagerModuleProxy::Result::invalidate( return false; } -char ModuleAnalysisManagerCGSCCProxy::PassID; - -char FunctionAnalysisManagerCGSCCProxy::PassID; - FunctionAnalysisManagerCGSCCProxy::Result FunctionAnalysisManagerCGSCCProxy::run(LazyCallGraph::SCC &C) { return Result(*FAM); @@ -75,5 +69,3 @@ bool FunctionAnalysisManagerCGSCCProxy::Result::invalidate( // Return false to indicate that this result is still a valid proxy. return false; } - -char CGSCCAnalysisManagerFunctionProxy::PassID; diff --git a/llvm/lib/Analysis/CallGraph.cpp b/llvm/lib/Analysis/CallGraph.cpp index 7cec962678e..426684be58a 100644 --- a/llvm/lib/Analysis/CallGraph.cpp +++ b/llvm/lib/Analysis/CallGraph.cpp @@ -263,8 +263,6 @@ void CallGraphNode::replaceCallEdge(CallSite CS, // Out-of-line definitions of CallGraphAnalysis class members. // -char CallGraphAnalysis::PassID; - //===----------------------------------------------------------------------===// // Implementations of the CallGraphWrapperPass class methods. // diff --git a/llvm/lib/Analysis/DominanceFrontier.cpp b/llvm/lib/Analysis/DominanceFrontier.cpp index ef7062da775..00904a95ce7 100644 --- a/llvm/lib/Analysis/DominanceFrontier.cpp +++ b/llvm/lib/Analysis/DominanceFrontier.cpp @@ -56,8 +56,6 @@ LLVM_DUMP_METHOD void DominanceFrontierWrapperPass::dump() const { } #endif -char DominanceFrontierAnalysis::PassID; - DominanceFrontier DominanceFrontierAnalysis::run(Function &F, FunctionAnalysisManager *AM) { DominanceFrontier DF; diff --git a/llvm/lib/Analysis/GlobalsModRef.cpp b/llvm/lib/Analysis/GlobalsModRef.cpp index 549b37451eb..01ef5af4e9b 100644 --- a/llvm/lib/Analysis/GlobalsModRef.cpp +++ b/llvm/lib/Analysis/GlobalsModRef.cpp @@ -940,8 +940,6 @@ GlobalsAAResult GlobalsAA::run(Module &M, AnalysisManager<Module> *AM) { AM->getResult<CallGraphAnalysis>(M)); } -char GlobalsAA::PassID; - char GlobalsAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(GlobalsAAWrapperPass, "globals-aa", "Globals Alias Analysis", false, true) diff --git a/llvm/lib/Analysis/LazyCallGraph.cpp b/llvm/lib/Analysis/LazyCallGraph.cpp index 5de90782a31..88f5cd7dd9f 100644 --- a/llvm/lib/Analysis/LazyCallGraph.cpp +++ b/llvm/lib/Analysis/LazyCallGraph.cpp @@ -1499,8 +1499,6 @@ LazyCallGraph::RefSCC *LazyCallGraph::getNextRefSCCInPostOrder() { } } -char LazyCallGraphAnalysis::PassID; - LazyCallGraphPrinterPass::LazyCallGraphPrinterPass(raw_ostream &OS) : OS(OS) {} static void printNode(raw_ostream &OS, LazyCallGraph::Node &N) { diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp index 14ca91dc5e0..bcec24c822f 100644 --- a/llvm/lib/Analysis/LoopInfo.cpp +++ b/llvm/lib/Analysis/LoopInfo.cpp @@ -641,8 +641,6 @@ void LoopInfo::markAsRemoved(Loop *Unloop) { } } -char LoopAnalysis::PassID; - LoopInfo LoopAnalysis::run(Function &F, AnalysisManager<Function> *AM) { // FIXME: Currently we create a LoopInfo from scratch for every function. // This may prove to be too wasteful due to deallocating and re-allocating diff --git a/llvm/lib/Analysis/LoopPassManager.cpp b/llvm/lib/Analysis/LoopPassManager.cpp index b1d1140d11b..1d87e07b837 100644 --- a/llvm/lib/Analysis/LoopPassManager.cpp +++ b/llvm/lib/Analysis/LoopPassManager.cpp @@ -11,8 +11,6 @@ using namespace llvm; -char LoopAnalysisManagerFunctionProxy::PassID; - LoopAnalysisManagerFunctionProxy::Result LoopAnalysisManagerFunctionProxy::run(Function &F) { // TODO: In FunctionAnalysisManagerModuleProxy we assert that the @@ -41,5 +39,3 @@ bool LoopAnalysisManagerFunctionProxy::Result::invalidate( // Return false to indicate that this result is still a valid proxy. return false; } - -char FunctionAnalysisManagerLoopProxy::PassID; diff --git a/llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp b/llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp index 25f660ffe22..31e46e384d2 100644 --- a/llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp +++ b/llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp @@ -136,8 +136,6 @@ ObjCARCAAResult ObjCARCAA::run(Function &F, AnalysisManager<Function> *AM) { AM->getResult<TargetLibraryAnalysis>(F)); } -char ObjCARCAA::PassID; - char ObjCARCAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(ObjCARCAAWrapperPass, "objc-arc-aa", "ObjC-ARC-Based Alias Analysis", false, true) diff --git a/llvm/lib/Analysis/PostDominators.cpp b/llvm/lib/Analysis/PostDominators.cpp index b515108fafb..d617a876b84 100644 --- a/llvm/lib/Analysis/PostDominators.cpp +++ b/llvm/lib/Analysis/PostDominators.cpp @@ -44,8 +44,6 @@ FunctionPass* llvm::createPostDomTree() { return new PostDominatorTreeWrapperPass(); } -char PostDominatorTreeAnalysis::PassID; - PostDominatorTree PostDominatorTreeAnalysis::run(Function &F) { PostDominatorTree PDT; PDT.recalculate(F); diff --git a/llvm/lib/Analysis/RegionInfo.cpp b/llvm/lib/Analysis/RegionInfo.cpp index 72b3217dc6f..40501e6f7b6 100644 --- a/llvm/lib/Analysis/RegionInfo.cpp +++ b/llvm/lib/Analysis/RegionInfo.cpp @@ -185,8 +185,6 @@ namespace llvm { // RegionInfoAnalysis implementation // -char RegionInfoAnalysis::PassID; - RegionInfo RegionInfoAnalysis::run(Function &F, AnalysisManager<Function> *AM) { RegionInfo RI; auto *DT = &AM->getResult<DominatorTreeAnalysis>(F); diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index f1f57c6fbd6..2056306e127 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -9554,8 +9554,6 @@ void ScalarEvolution::verify() const { // TODO: Verify more things. } -char ScalarEvolutionAnalysis::PassID; - ScalarEvolution ScalarEvolutionAnalysis::run(Function &F, AnalysisManager<Function> *AM) { return ScalarEvolution(F, AM->getResult<TargetLibraryAnalysis>(F), diff --git a/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp b/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp index 2e50c80c4e7..5d04d89f1d2 100644 --- a/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp +++ b/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp @@ -116,8 +116,6 @@ SCEVAAResult SCEVAA::run(Function &F, AnalysisManager<Function> *AM) { AM->getResult<ScalarEvolutionAnalysis>(F)); } -char SCEVAA::PassID; - char SCEVAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(SCEVAAWrapperPass, "scev-aa", "ScalarEvolution-based Alias Analysis", false, true) diff --git a/llvm/lib/Analysis/ScopedNoAliasAA.cpp b/llvm/lib/Analysis/ScopedNoAliasAA.cpp index bd4451420b6..4735ed8933b 100644 --- a/llvm/lib/Analysis/ScopedNoAliasAA.cpp +++ b/llvm/lib/Analysis/ScopedNoAliasAA.cpp @@ -178,8 +178,6 @@ ScopedNoAliasAAResult ScopedNoAliasAA::run(Function &F, return ScopedNoAliasAAResult(AM->getResult<TargetLibraryAnalysis>(F)); } -char ScopedNoAliasAA::PassID; - char ScopedNoAliasAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(ScopedNoAliasAAWrapperPass, "scoped-noalias", "Scoped NoAlias Alias Analysis", false, true) diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp index 3bd54c47e60..950ee549f80 100644 --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -636,8 +636,6 @@ TargetLibraryInfoWrapperPass::TargetLibraryInfoWrapperPass( initializeTargetLibraryInfoWrapperPassPass(*PassRegistry::getPassRegistry()); } -char TargetLibraryAnalysis::PassID; - // Register the basic pass. INITIALIZE_PASS(TargetLibraryInfoWrapperPass, "targetlibinfo", "Target Library Information", false, true) diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index bd957898834..a9e18e01caa 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -377,8 +377,6 @@ TargetIRAnalysis::Result TargetIRAnalysis::run(const Function &F) { return TTICallback(F); } -char TargetIRAnalysis::PassID; - TargetIRAnalysis::Result TargetIRAnalysis::getDefaultTTI(const Function &F) { return Result(F.getParent()->getDataLayout()); } diff --git a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp b/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp index 9f923913ca2..1ef61e8e6db 100644 --- a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp +++ b/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp @@ -588,8 +588,6 @@ TypeBasedAAResult TypeBasedAA::run(Function &F, AnalysisManager<Function> *AM) { return TypeBasedAAResult(AM->getResult<TargetLibraryAnalysis>(F)); } -char TypeBasedAA::PassID; - char TypeBasedAAWrapperPass::ID = 0; INITIALIZE_PASS_BEGIN(TypeBasedAAWrapperPass, "tbaa", "Type-Based Alias Analysis", false, true) |

