[llvm-commits] CVS: llvm/lib/Analysis/IPA/Andersens.cpp CallGraph.cpp CallGraphSCCPass.cpp FindUsedTypes.cpp GlobalsModRef.cpp

Devang Patel dpatel at apple.com
Tue May 1 14:18:01 PDT 2007



Changes in directory llvm/lib/Analysis/IPA:

Andersens.cpp updated: 1.46 -> 1.47
CallGraph.cpp updated: 1.65 -> 1.66
CallGraphSCCPass.cpp updated: 1.21 -> 1.22
FindUsedTypes.cpp updated: 1.38 -> 1.39
GlobalsModRef.cpp updated: 1.29 -> 1.30
---
Log message:

Do not use typeinfo to identify pass in pass manager.


---
Diffs of the changes:  (+20 -2)

 Andersens.cpp        |    6 ++++++
 CallGraph.cpp        |    6 +++++-
 CallGraphSCCPass.cpp |    5 ++++-
 FindUsedTypes.cpp    |    1 +
 GlobalsModRef.cpp    |    4 ++++
 5 files changed, 20 insertions(+), 2 deletions(-)


Index: llvm/lib/Analysis/IPA/Andersens.cpp
diff -u llvm/lib/Analysis/IPA/Andersens.cpp:1.46 llvm/lib/Analysis/IPA/Andersens.cpp:1.47
--- llvm/lib/Analysis/IPA/Andersens.cpp:1.46	Sun Mar  4 18:00:42 2007
+++ llvm/lib/Analysis/IPA/Andersens.cpp	Tue May  1 16:15:46 2007
@@ -75,12 +75,17 @@
 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 @@
     void visitInstruction(Instruction &I);
   };
 
+  const int Andersens::ID = 0;
   RegisterPass<Andersens> X("anders-aa",
                             "Andersen's Interprocedural Alias Analysis");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);


Index: llvm/lib/Analysis/IPA/CallGraph.cpp
diff -u llvm/lib/Analysis/IPA/CallGraph.cpp:1.65 llvm/lib/Analysis/IPA/CallGraph.cpp:1.66
--- llvm/lib/Analysis/IPA/CallGraph.cpp:1.65	Mon Feb  5 17:42:17 2007
+++ llvm/lib/Analysis/IPA/CallGraph.cpp	Tue May  1 16:15:46 2007
@@ -51,7 +51,9 @@
   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 @@
   }
 };
 
+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);
 


Index: llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp
diff -u llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp:1.21 llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp:1.22
--- llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp:1.21	Mon Apr 16 13:10:22 2007
+++ llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp	Tue May  1 16:15:46 2007
@@ -30,7 +30,9 @@
 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 @@
   }
 };
 
+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) {


Index: llvm/lib/Analysis/IPA/FindUsedTypes.cpp
diff -u llvm/lib/Analysis/IPA/FindUsedTypes.cpp:1.38 llvm/lib/Analysis/IPA/FindUsedTypes.cpp:1.39
--- llvm/lib/Analysis/IPA/FindUsedTypes.cpp:1.38	Wed Dec  6 00:35:25 2006
+++ llvm/lib/Analysis/IPA/FindUsedTypes.cpp	Tue May  1 16:15:46 2007
@@ -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");
 


Index: llvm/lib/Analysis/IPA/GlobalsModRef.cpp
diff -u llvm/lib/Analysis/IPA/GlobalsModRef.cpp:1.29 llvm/lib/Analysis/IPA/GlobalsModRef.cpp:1.30
--- llvm/lib/Analysis/IPA/GlobalsModRef.cpp:1.29	Mon Feb  5 17:42:17 2007
+++ llvm/lib/Analysis/IPA/GlobalsModRef.cpp	Tue May  1 16:15:46 2007
@@ -83,6 +83,9 @@
     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 @@
     bool AnalyzeIndirectGlobalMemory(GlobalValue *GV);
   };
 
+  const int GlobalsModRef::ID = 0;
   RegisterPass<GlobalsModRef> X("globalsmodref-aa",
                                 "Simple mod/ref analysis for globals");
   RegisterAnalysisGroup<AliasAnalysis> Y(X);






More information about the llvm-commits mailing list