* Move the isEquivalentTo implementations here. They can probably be put
authorChris Lattner <sabre@nondot.org>
Sun, 31 Mar 2002 07:16:08 +0000 (07:16 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 31 Mar 2002 07:16:08 +0000 (07:16 +0000)
  someplace nicer in the file though.
* Add new dump method for debugging

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2064 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/NodeImpl.cpp

index b8fabf8a7472520968a40c2c97a03ffc24ef8b85..24fad04a4f97d04400e73f9fe484b21ee2973337 100644 (file)
@@ -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"
 #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());