diff options
author | Chris Lattner <sabre@nondot.org> | 2002-03-28 17:56:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-03-28 17:56:03 +0000 |
commit | 1120c8b34ada1f7ce103f617a0dfa4526bf9e207 (patch) | |
tree | bf50db8005a275bcf7d65a8e90a6ae80154be8b2 /lib/Analysis/DataStructure/FunctionRepBuilder.h | |
parent | 1d8ec6194a3c8d6e676f373af04171e5ad2ed4eb (diff) |
Many changes
* Simplify a lot of the inlining stuff. There are still problems, but not
many
* Break up the Function representation to have a vector for every different
node type so it is fast to find nodes of a particular flavor.
* Do more intelligent merging of call values
* Allow elimination of unreachable shadow and allocation nodes
* Generalize indistinguishability testing to allow merging of identical calls.
* Increase shadow node merging power
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2010 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/DataStructure/FunctionRepBuilder.h')
-rw-r--r-- | lib/Analysis/DataStructure/FunctionRepBuilder.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/Analysis/DataStructure/FunctionRepBuilder.h b/lib/Analysis/DataStructure/FunctionRepBuilder.h index 6809261b90..bc561342f2 100644 --- a/lib/Analysis/DataStructure/FunctionRepBuilder.h +++ b/lib/Analysis/DataStructure/FunctionRepBuilder.h @@ -61,8 +61,11 @@ class FunctionRepBuilder : InstVisitor<FunctionRepBuilder> { // Nodes - Keep track of all of the resultant nodes, because there may not // be edges connecting these to anything. // - std::vector<DSNode*> Nodes; + std::vector<ArgDSNode*> ArgNodes; + std::vector<AllocDSNode*> AllocNodes; std::vector<ShadowDSNode*> ShadowNodes; + std::vector<GlobalDSNode*> GlobalNodes; + std::vector<CallDSNode*> CallNodes; // addAllUsesToWorkList - Add all of the instructions users of the specified // value to the work list for further processing... @@ -75,11 +78,13 @@ public: processWorkList(); } - void addNode(DSNode *N) { Nodes.push_back(N); } - const std::vector<DSNode*> &getNodes() const { return Nodes; } - - void addShadowNode(ShadowDSNode *N) { ShadowNodes.push_back(N); } + const std::vector<ArgDSNode*> &getArgNodes() const { return ArgNodes; } + const std::vector<AllocDSNode*> &getAllocNodes() const { return AllocNodes; } const std::vector<ShadowDSNode*> &getShadowNodes() const {return ShadowNodes;} + const std::vector<GlobalDSNode*> &getGlobalNodes() const {return GlobalNodes;} + const std::vector<CallDSNode*> &getCallNodes() const { return CallNodes; } + + void addShadowNode(ShadowDSNode *SN) { ShadowNodes.push_back(SN); } const PointerValSet &getRetNode() const { return RetNode; } |