* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Add support for different "PassType's"
* Add new RegisterOpt/RegisterAnalysis templates for registering passes that
are to show up in opt or analyze
* Register Analyses now
* Change optimizations to use RegisterOpt instead of RegisterPass
* Remove getPassName implementations from various subclasses
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3112 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/DataStructure/BottomUpClosure.cpp b/lib/Analysis/DataStructure/BottomUpClosure.cpp
index f7a6332..62206d9 100644
--- a/lib/Analysis/DataStructure/BottomUpClosure.cpp
+++ b/lib/Analysis/DataStructure/BottomUpClosure.cpp
@@ -13,6 +13,8 @@
#include "Support/StatisticReporter.h"
using std::map;
+static RegisterAnalysis<BUDataStructures>
+X("budatastructure", "Bottom-Up Data Structure Analysis Closure");
AnalysisID BUDataStructures::ID(AnalysisID::create<BUDataStructures>());
// releaseMemory - If the pass pipeline is done with this pass, we can release
diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp
index befbd55..f573a0b 100644
--- a/lib/Analysis/DataStructure/DataStructure.cpp
+++ b/lib/Analysis/DataStructure/DataStructure.cpp
@@ -15,6 +15,8 @@
using std::vector;
+static RegisterAnalysis<LocalDataStructures>
+X("datastructure", "Local Data Structure Analysis");
AnalysisID LocalDataStructures::ID(AnalysisID::create<LocalDataStructures>());
//===----------------------------------------------------------------------===//
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index 0e3722a..dfb5de6 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -40,13 +40,12 @@
#include "llvm/Analysis/CallGraph.h"
#include "llvm/Module.h"
-#include "llvm/Function.h"
-#include "llvm/BasicBlock.h"
#include "llvm/iOther.h"
#include "llvm/iTerminators.h"
#include "Support/STLExtras.h"
#include <algorithm>
-#include <iostream>
+
+static RegisterAnalysis<CallGraph> X("callgraph", "Call Graph Construction");
AnalysisID CallGraph::ID(AnalysisID::create<CallGraph>());
diff --git a/lib/Analysis/IntervalPartition.cpp b/lib/Analysis/IntervalPartition.cpp
index 8d0e34c..5e6bf9c 100644
--- a/lib/Analysis/IntervalPartition.cpp
+++ b/lib/Analysis/IntervalPartition.cpp
@@ -10,6 +10,9 @@
using std::make_pair;
+static RegisterAnalysis<IntervalPartition>
+X("intervals", "Interval Partition Construction");
+
AnalysisID IntervalPartition::ID(AnalysisID::create<IntervalPartition>(), true);
//===----------------------------------------------------------------------===//
diff --git a/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp b/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
index b080ec2..e730f49 100644
--- a/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
+++ b/lib/Analysis/LiveVar/FunctionLiveVarInfo.cpp
@@ -15,6 +15,8 @@
#include "Support/CommandLine.h"
#include <iostream>
+static RegisterAnalysis<FunctionLiveVarInfo>
+X("livevar", "Live Variable Analysis");
AnalysisID FunctionLiveVarInfo::ID(AnalysisID::create<FunctionLiveVarInfo>());
LiveVarDebugLevel_t DEBUG_LV;
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp
index 2559912..c53cc90 100644
--- a/lib/Analysis/LoopInfo.cpp
+++ b/lib/Analysis/LoopInfo.cpp
@@ -13,6 +13,8 @@
#include "Support/DepthFirstIterator.h"
#include <algorithm>
+static RegisterAnalysis<LoopInfo>
+X("loops", "Natural Loop Construction");
AnalysisID LoopInfo::ID(AnalysisID::create<LoopInfo>(), true);
//===----------------------------------------------------------------------===//
diff --git a/lib/Analysis/PostDominators.cpp b/lib/Analysis/PostDominators.cpp
index 777b3c4..9b35d16 100644
--- a/lib/Analysis/PostDominators.cpp
+++ b/lib/Analysis/PostDominators.cpp
@@ -18,6 +18,11 @@
// DominatorSet Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominatorSet>
+A("domset", "Dominator Set Construction");
+static RegisterAnalysis<PostDominatorSet>
+B("postdomset", "Post-Dominator Set Construction");
+
AnalysisID DominatorSet::ID(AnalysisID::create<DominatorSet>(), true);
AnalysisID PostDominatorSet::ID(AnalysisID::create<PostDominatorSet>(), true);
@@ -151,6 +156,11 @@
// ImmediateDominators Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<ImmediateDominators>
+C("idom", "Immediate Dominators Construction");
+static RegisterAnalysis<ImmediatePostDominators>
+D("postidom", "Immediate Post-Dominators Construction");
+
AnalysisID ImmediateDominators::ID(AnalysisID::create<ImmediateDominators>(), true);
AnalysisID ImmediatePostDominators::ID(AnalysisID::create<ImmediatePostDominators>(), true);
@@ -195,6 +205,11 @@
// DominatorTree Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominatorTree>
+E("domtree", "Dominator Tree Construction");
+static RegisterAnalysis<PostDominatorTree>
+F("postdomtree", "Post-Dominator Tree Construction");
+
AnalysisID DominatorTree::ID(AnalysisID::create<DominatorTree>(), true);
AnalysisID PostDominatorTree::ID(AnalysisID::create<PostDominatorTree>(), true);
@@ -307,6 +322,11 @@
// DominanceFrontier Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominanceFrontier>
+G("domfrontier", "Dominance Frontier Construction");
+static RegisterAnalysis<PostDominanceFrontier>
+H("postdomfrontier", "Post-Dominance Frontier Construction");
+
AnalysisID DominanceFrontier::ID(AnalysisID::create<DominanceFrontier>(), true);
AnalysisID PostDominanceFrontier::ID(AnalysisID::create<PostDominanceFrontier>(), true);
diff --git a/lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.cpp b/lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.cpp
index b080ec2..e730f49 100644
--- a/lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.cpp
+++ b/lib/Target/SparcV9/LiveVar/FunctionLiveVarInfo.cpp
@@ -15,6 +15,8 @@
#include "Support/CommandLine.h"
#include <iostream>
+static RegisterAnalysis<FunctionLiveVarInfo>
+X("livevar", "Live Variable Analysis");
AnalysisID FunctionLiveVarInfo::ID(AnalysisID::create<FunctionLiveVarInfo>());
LiveVarDebugLevel_t DEBUG_LV;
diff --git a/lib/Transforms/IPO/ConstantMerge.cpp b/lib/Transforms/IPO/ConstantMerge.cpp
index 905c7a5..b979104 100644
--- a/lib/Transforms/IPO/ConstantMerge.cpp
+++ b/lib/Transforms/IPO/ConstantMerge.cpp
@@ -31,8 +31,8 @@
}
};
-Statistic<> NumMerged("constmerge\t\t- Number of global constants merged");
-RegisterPass<ConstantMerge> X("constmerge", "Merge Duplicate Global Constants");
+ Statistic<> NumMerged("constmerge\t\t- Number of global constants merged");
+ RegisterOpt<ConstantMerge> X("constmerge","Merge Duplicate Global Constants");
}
Pass *createConstantMergePass() { return new ConstantMerge(); }
diff --git a/lib/Transforms/IPO/DeadTypeElimination.cpp b/lib/Transforms/IPO/DeadTypeElimination.cpp
index f276ca7..3473f52 100644
--- a/lib/Transforms/IPO/DeadTypeElimination.cpp
+++ b/lib/Transforms/IPO/DeadTypeElimination.cpp
@@ -30,7 +30,7 @@
AU.addRequired(FindUsedTypes::ID);
}
};
- RegisterPass<DTE> X("deadtypeelim", "Dead Type Elimination");
+ RegisterOpt<DTE> X("deadtypeelim", "Dead Type Elimination");
Statistic<> NumKilled("deadtypeelim\t- Number of unused typenames removed from symtab");
}
diff --git a/lib/Transforms/IPO/FunctionResolution.cpp b/lib/Transforms/IPO/FunctionResolution.cpp
index 0d05611..44f8485 100644
--- a/lib/Transforms/IPO/FunctionResolution.cpp
+++ b/lib/Transforms/IPO/FunctionResolution.cpp
@@ -32,7 +32,7 @@
struct FunctionResolvingPass : public Pass {
bool run(Module &M);
};
- RegisterPass<FunctionResolvingPass> X("funcresolve", "Resolve Functions");
+ RegisterOpt<FunctionResolvingPass> X("funcresolve", "Resolve Functions");
}
Pass *createFunctionResolvingPass() {
diff --git a/lib/Transforms/IPO/GlobalDCE.cpp b/lib/Transforms/IPO/GlobalDCE.cpp
index a61b1ab..029456e 100644
--- a/lib/Transforms/IPO/GlobalDCE.cpp
+++ b/lib/Transforms/IPO/GlobalDCE.cpp
@@ -86,7 +86,7 @@
AU.addRequired(CallGraph::ID);
}
};
- RegisterPass<GlobalDCE> X("globaldce", "Dead Global Elimination");
+ RegisterOpt<GlobalDCE> X("globaldce", "Dead Global Elimination");
}
Pass *createGlobalDCEPass() { return new GlobalDCE(); }
diff --git a/lib/Transforms/IPO/Internalize.cpp b/lib/Transforms/IPO/Internalize.cpp
index b6a48b4..7ea7a6f 100644
--- a/lib/Transforms/IPO/Internalize.cpp
+++ b/lib/Transforms/IPO/Internalize.cpp
@@ -41,7 +41,7 @@
}
};
-RegisterPass<InternalizePass> X("internalize", "Internalize Functions");
+ RegisterOpt<InternalizePass> X("internalize", "Internalize Functions");
} // end anonymous namespace
Pass *createInternalizePass() {
diff --git a/lib/Transforms/IPO/OldPoolAllocate.cpp b/lib/Transforms/IPO/OldPoolAllocate.cpp
index c22d53e..43fd162 100644
--- a/lib/Transforms/IPO/OldPoolAllocate.cpp
+++ b/lib/Transforms/IPO/OldPoolAllocate.cpp
@@ -315,8 +315,8 @@
};
- RegisterPass<PoolAllocate> X("poolalloc",
- "Pool allocate disjoint datastructures");
+ RegisterOpt<PoolAllocate> X("poolalloc",
+ "Pool allocate disjoint datastructures");
}
// isNotPoolableAlloc - This is a predicate that returns true if the specified
diff --git a/lib/Transforms/IPO/SimpleStructMutation.cpp b/lib/Transforms/IPO/SimpleStructMutation.cpp
index 464d628..5987155 100644
--- a/lib/Transforms/IPO/SimpleStructMutation.cpp
+++ b/lib/Transforms/IPO/SimpleStructMutation.cpp
@@ -189,10 +189,10 @@
}
namespace {
- RegisterPass<SwapStructElements> X("swapstructs",
- "Swap structure types around",
- createSwapElementsPass);
- RegisterPass<SortStructElements> Y("sortstructs",
- "Sort structure elements by size",
- createSortElementsPass);
+ RegisterOpt<SwapStructElements> X("swapstructs",
+ "Swap structure types around",
+ createSwapElementsPass);
+ RegisterOpt<SortStructElements> Y("sortstructs",
+ "Sort structure elements by size",
+ createSortElementsPass);
}
diff --git a/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp b/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp
index 95cd5be..98430f9 100644
--- a/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp
+++ b/lib/Transforms/Instrumentation/ProfilePaths/ProfilePaths.cpp
@@ -47,7 +47,7 @@
}
};
-static RegisterPass<ProfilePaths> X("paths", "Profile Paths");
+static RegisterOpt<ProfilePaths> X("paths", "Profile Paths");
// createProfilePathsPass - Create a new pass to add path profiling
//
diff --git a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
index ef7d63e..d3e20ac 100644
--- a/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
+++ b/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
@@ -17,7 +17,7 @@
AnalysisID UnifyFunctionExitNodes::ID(AnalysisID::create<UnifyFunctionExitNodes>());
-static RegisterPass<UnifyFunctionExitNodes>
+static RegisterOpt<UnifyFunctionExitNodes>
X("mergereturn", "Unify function exit nodes");
// UnifyAllExitNodes - Unify all exit nodes of the CFG by creating a new
diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp
index 777b3c4..9b35d16 100644
--- a/lib/VMCore/Dominators.cpp
+++ b/lib/VMCore/Dominators.cpp
@@ -18,6 +18,11 @@
// DominatorSet Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominatorSet>
+A("domset", "Dominator Set Construction");
+static RegisterAnalysis<PostDominatorSet>
+B("postdomset", "Post-Dominator Set Construction");
+
AnalysisID DominatorSet::ID(AnalysisID::create<DominatorSet>(), true);
AnalysisID PostDominatorSet::ID(AnalysisID::create<PostDominatorSet>(), true);
@@ -151,6 +156,11 @@
// ImmediateDominators Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<ImmediateDominators>
+C("idom", "Immediate Dominators Construction");
+static RegisterAnalysis<ImmediatePostDominators>
+D("postidom", "Immediate Post-Dominators Construction");
+
AnalysisID ImmediateDominators::ID(AnalysisID::create<ImmediateDominators>(), true);
AnalysisID ImmediatePostDominators::ID(AnalysisID::create<ImmediatePostDominators>(), true);
@@ -195,6 +205,11 @@
// DominatorTree Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominatorTree>
+E("domtree", "Dominator Tree Construction");
+static RegisterAnalysis<PostDominatorTree>
+F("postdomtree", "Post-Dominator Tree Construction");
+
AnalysisID DominatorTree::ID(AnalysisID::create<DominatorTree>(), true);
AnalysisID PostDominatorTree::ID(AnalysisID::create<PostDominatorTree>(), true);
@@ -307,6 +322,11 @@
// DominanceFrontier Implementation
//===----------------------------------------------------------------------===//
+static RegisterAnalysis<DominanceFrontier>
+G("domfrontier", "Dominance Frontier Construction");
+static RegisterAnalysis<PostDominanceFrontier>
+H("postdomfrontier", "Post-Dominance Frontier Construction");
+
AnalysisID DominanceFrontier::ID(AnalysisID::create<DominanceFrontier>(), true);
AnalysisID PostDominanceFrontier::ID(AnalysisID::create<PostDominanceFrontier>(), true);