[llvm-commits] CVS: llvm/include/llvm/Analysis/DataStructure.h

Chris Lattner lattner at cs.uiuc.edu
Wed Oct 16 23:24:01 PDT 2002


Changes in directory llvm/include/llvm/Analysis:

DataStructure.h updated: 1.43 -> 1.44

---
Log message:

  * Add data structures to BU pass to keep track of call sites for functions
  * Reenable the TD analysis


---
Diffs of the changes:

Index: llvm/include/llvm/Analysis/DataStructure.h
diff -u llvm/include/llvm/Analysis/DataStructure.h:1.43 llvm/include/llvm/Analysis/DataStructure.h:1.44
--- llvm/include/llvm/Analysis/DataStructure.h:1.43	Wed Oct  2 17:14:17 2002
+++ llvm/include/llvm/Analysis/DataStructure.h	Wed Oct 16 23:23:05 2002
@@ -11,11 +11,11 @@
 
 class Type;
 class DSGraph;
+class DSNodeHandle;
 class LocalDataStructures;     // A collection of local graphs for a program
 class BUDataStructures;        // A collection of bu graphs for a program
 class TDDataStructures;        // A collection of td graphs for a program
 
-
 // FIXME: move this stuff to a private header
 namespace DataStructureAnalysis {
   // isPointerType - Return true if this first class type is big enough to hold
@@ -63,8 +63,19 @@
 // only performs a "Bottom Up" propogation (hence the name).
 //
 class BUDataStructures : public Pass {
+public:
+  struct CallSite {
+    Function *Caller;
+    std::vector<DSNodeHandle> Context;
+
+    CallSite(Function &C, const std::vector<DSNodeHandle> &Con)
+      : Caller(&C), Context(Con) {}
+  };
+
+private:
   // DSInfo, one graph for each function
   std::map<const Function*, DSGraph*> DSInfo;
+  std::map<const Function*, std::vector<CallSite> > CallSites;
 public:
   ~BUDataStructures() { releaseMemory(); }
 
@@ -77,6 +88,12 @@
     return *I->second;
   }
 
+  const std::vector<CallSite> *getCallSites(const Function &F) const {
+    std::map<const Function*, std::vector<CallSite> >::const_iterator I
+      = CallSites.find(&F);
+    return I != CallSites.end() ? &I->second : 0;
+  }
+
   // print - Print out the analysis results...
   void print(std::ostream &O, const Module *M) const;
 
@@ -92,8 +109,6 @@
   DSGraph &calculateGraph(Function &F);
 };
 
-
-#if 0
 // TDDataStructures - Analysis that computes new data structure graphs
 // for each function using the closed graphs for the callers computed
 // by the bottom-up pass.
@@ -126,11 +141,10 @@
   }
 private:
   DSGraph &calculateGraph(Function &F);
-  void pushGraphIntoCallee(DSGraph &callerGraph, DSGraph &calleeGraph,
-                           std::map<Value*, DSNodeHandle> &OldValMap,
-                           std::map<const DSNode*, DSNode*> &OldNodeMap);
+
+  void ResolveCallSite(DSGraph &Graph,
+                       const BUDataStructures::CallSite &CallSite);
 };
-#endif
 
 #if 0
 // GlobalDSGraph - A common graph for all the globals and their outgoing links





More information about the llvm-commits mailing list