[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