diff options
author | Chris Lattner <sabre@nondot.org> | 2002-03-31 07:16:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-03-31 07:16:08 +0000 |
commit | d45f4df2ae4ed823504b49ca5dc5bbfa26551770 (patch) | |
tree | 4782a55bc74869dfbc3e0e700c25672d7e607adb | |
parent | 49c3ea8c1eacbecc3321c8fbf513b13657e0e94b (diff) | |
download | bcm5719-llvm-d45f4df2ae4ed823504b49ca5dc5bbfa26551770.tar.gz bcm5719-llvm-d45f4df2ae4ed823504b49ca5dc5bbfa26551770.zip |
* Move the isEquivalentTo implementations here. They can probably be put
someplace nicer in the file though.
* Add new dump method for debugging
llvm-svn: 2064
-rw-r--r-- | llvm/lib/Analysis/DataStructure/NodeImpl.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/DataStructure/NodeImpl.cpp b/llvm/lib/Analysis/DataStructure/NodeImpl.cpp index b8fabf8a747..24fad04a4f9 100644 --- a/llvm/lib/Analysis/DataStructure/NodeImpl.cpp +++ b/llvm/lib/Analysis/DataStructure/NodeImpl.cpp @@ -4,7 +4,7 @@ // //===----------------------------------------------------------------------===// -#include "llvm/Analysis/DataStructure.h" +#include "llvm/Analysis/DataStructureGraph.h" #include "llvm/DerivedTypes.h" #include "llvm/Function.h" #include "llvm/BasicBlock.h" @@ -15,6 +15,42 @@ #include <algorithm> #include <sstream> +bool AllocDSNode::isEquivalentTo(DSNode *Node) const { + if (AllocDSNode *N = dyn_cast<AllocDSNode>(Node)) + return getType() == Node->getType(); +// return N->Allocation == Allocation; + return false; +} + +bool GlobalDSNode::isEquivalentTo(DSNode *Node) const { + if (GlobalDSNode *G = dyn_cast<GlobalDSNode>(Node)) + return G->Val == Val; + return false; +} + +bool CallDSNode::isEquivalentTo(DSNode *Node) const { + if (CallDSNode *C = dyn_cast<CallDSNode>(Node)) + return /*C->CI == CI &&*/ + C->CI->getCalledFunction() == CI->getCalledFunction() && + C->ArgLinks == ArgLinks; + return false; +} + +bool ArgDSNode::isEquivalentTo(DSNode *Node) const { + return false; +} + +// NodesAreEquivalent - Check to see if the nodes are equivalent in all ways +// except node type. Since we know N1 is a shadow node, N2 is allowed to be +// any type. +// +bool ShadowDSNode::isEquivalentTo(DSNode *Node) const { + return !isCriticalNode(); // Must not be a critical node... +} + + + + //===----------------------------------------------------------------------===// // DSNode Class Implementation // @@ -109,6 +145,8 @@ static string escapeLabel(const string &In) { return Label; } +void DSNode::dump() const { print(cerr); } + void DSNode::print(std::ostream &O) const { string Caption = escapeLabel(getCaption()); |