summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2016-02-26 11:44:45 +0000
committerChandler Carruth <chandlerc@gmail.com>2016-02-26 11:44:45 +0000
commit3a6343555180817fe1f533a60e66b0e4db465e46 (patch)
treeb5c40db2a6e046ae4d71a83a06a4f591233ba90f /llvm/lib/Analysis
parent6456376fe94dcf4df5f2b946c1806fe579f9e414 (diff)
downloadbcm5719-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.cpp3
-rw-r--r--llvm/lib/Analysis/AssumptionCache.cpp2
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp2
-rw-r--r--llvm/lib/Analysis/CFLAliasAnalysis.cpp2
-rw-r--r--llvm/lib/Analysis/CGSCCPassManager.cpp8
-rw-r--r--llvm/lib/Analysis/CallGraph.cpp2
-rw-r--r--llvm/lib/Analysis/DominanceFrontier.cpp2
-rw-r--r--llvm/lib/Analysis/GlobalsModRef.cpp2
-rw-r--r--llvm/lib/Analysis/LazyCallGraph.cpp2
-rw-r--r--llvm/lib/Analysis/LoopInfo.cpp2
-rw-r--r--llvm/lib/Analysis/LoopPassManager.cpp4
-rw-r--r--llvm/lib/Analysis/ObjCARCAliasAnalysis.cpp2
-rw-r--r--llvm/lib/Analysis/PostDominators.cpp2
-rw-r--r--llvm/lib/Analysis/RegionInfo.cpp2
-rw-r--r--llvm/lib/Analysis/ScalarEvolution.cpp2
-rw-r--r--llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp2
-rw-r--r--llvm/lib/Analysis/ScopedNoAliasAA.cpp2
-rw-r--r--llvm/lib/Analysis/TargetLibraryInfo.cpp2
-rw-r--r--llvm/lib/Analysis/TargetTransformInfo.cpp2
-rw-r--r--llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp2
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)
OpenPOWER on IntegriCloud