diff options
Diffstat (limited to 'lib/Analysis/IPA')
-rw-r--r-- | lib/Analysis/IPA/Andersens.cpp | 6 | ||||
-rw-r--r-- | lib/Analysis/IPA/CallGraph.cpp | 6 | ||||
-rw-r--r-- | lib/Analysis/IPA/CallGraphSCCPass.cpp | 5 | ||||
-rw-r--r-- | lib/Analysis/IPA/FindUsedTypes.cpp | 1 | ||||
-rw-r--r-- | lib/Analysis/IPA/GlobalsModRef.cpp | 4 |
5 files changed, 20 insertions, 2 deletions
diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp index 0a281c8945..cd90a6f22b 100644 --- a/lib/Analysis/IPA/Andersens.cpp +++ b/lib/Analysis/IPA/Andersens.cpp @@ -75,12 +75,17 @@ STATISTIC(NumIndirectCallees , "Number of indirect callees found"); namespace { class VISIBILITY_HIDDEN Andersens : public ModulePass, public AliasAnalysis, private InstVisitor<Andersens> { + public: + static const int ID; // Class identification, replacement for typeinfo + Andersens() : ModulePass((intptr_t)&ID) {} + private: /// Node class - This class is used to represent a memory object in the /// program, and is the primitive used to build the points-to graph. class Node { std::vector<Node*> Pointees; Value *Val; public: + static const unsigned ID; // Pass identifcation, replacement for typeid Node() : Val(0) {} Node *setValue(Value *V) { assert(Val == 0 && "Value already set for this node!"); @@ -334,6 +339,7 @@ namespace { void visitInstruction(Instruction &I); }; + const int Andersens::ID = 0; RegisterPass<Andersens> X("anders-aa", "Andersen's Interprocedural Alias Analysis"); RegisterAnalysisGroup<AliasAnalysis> Y(X); diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp index bb96bb2d65..43e70bb218 100644 --- a/lib/Analysis/IPA/CallGraph.cpp +++ b/lib/Analysis/IPA/CallGraph.cpp @@ -51,7 +51,9 @@ class VISIBILITY_HIDDEN BasicCallGraph : public CallGraph, public ModulePass { CallGraphNode *CallsExternalNode; public: - BasicCallGraph() : Root(0), ExternalCallingNode(0), CallsExternalNode(0) {} + static const int ID; // Class identification, replacement for typeinfo + BasicCallGraph() : ModulePass((intptr_t)&ID), Root(0), + ExternalCallingNode(0), CallsExternalNode(0) {} // runOnModule - Compute the call graph for the specified module. virtual bool runOnModule(Module &M) { @@ -188,7 +190,9 @@ private: } }; +const int CallGraph::ID = 0; RegisterAnalysisGroup<CallGraph> X("Call Graph"); +const int BasicCallGraph::ID = 0; RegisterPass<BasicCallGraph> Y("basiccg", "Basic CallGraph Construction"); RegisterAnalysisGroup<CallGraph, true> Z(Y); diff --git a/lib/Analysis/IPA/CallGraphSCCPass.cpp b/lib/Analysis/IPA/CallGraphSCCPass.cpp index 0640b63e6b..2c5aeaa4c2 100644 --- a/lib/Analysis/IPA/CallGraphSCCPass.cpp +++ b/lib/Analysis/IPA/CallGraphSCCPass.cpp @@ -30,7 +30,9 @@ using namespace llvm; class CGPassManager : public ModulePass, public PMDataManager { public: - CGPassManager(int Depth) : PMDataManager(Depth) { } + static const int ID; + CGPassManager(int Depth) + : ModulePass((intptr_t)&ID), PMDataManager(Depth) { } /// run - Execute all of the passes scheduled for execution. Keep track of /// whether any of the passes modifies the module, and if so, return true. @@ -71,6 +73,7 @@ public: } }; +const int CGPassManager::ID = 0; /// run - Execute all of the passes scheduled for execution. Keep track of /// whether any of the passes modifies the module, and if so, return true. bool CGPassManager::runOnModule(Module &M) { diff --git a/lib/Analysis/IPA/FindUsedTypes.cpp b/lib/Analysis/IPA/FindUsedTypes.cpp index 1208dd1ccc..d35f7beed1 100644 --- a/lib/Analysis/IPA/FindUsedTypes.cpp +++ b/lib/Analysis/IPA/FindUsedTypes.cpp @@ -21,6 +21,7 @@ #include "llvm/Support/InstIterator.h" using namespace llvm; +const int FindUsedTypes::ID = 0; static RegisterPass<FindUsedTypes> X("printusedtypes", "Find Used Types"); diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp index 8d41751b88..ea8b1d8487 100644 --- a/lib/Analysis/IPA/GlobalsModRef.cpp +++ b/lib/Analysis/IPA/GlobalsModRef.cpp @@ -83,6 +83,9 @@ namespace { std::map<Function*, FunctionRecord> FunctionInfo; public: + static const int ID; + GlobalsModRef() : ModulePass((intptr_t)&ID) {} + bool runOnModule(Module &M) { InitializeAliasAnalysis(this); // set up super class AnalyzeGlobals(M); // find non-addr taken globals @@ -143,6 +146,7 @@ namespace { bool AnalyzeIndirectGlobalMemory(GlobalValue *GV); }; + const int GlobalsModRef::ID = 0; RegisterPass<GlobalsModRef> X("globalsmodref-aa", "Simple mod/ref analysis for globals"); RegisterAnalysisGroup<AliasAnalysis> Y(X); |