mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-19 19:29:31 +00:00
* Move the isEquivalentTo implementations here. They can probably be put
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
This commit is contained in:
parent
e6b552fd86
commit
b28bf05483
@ -4,7 +4,7 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "llvm/Analysis/DataStructure.h"
|
#include "llvm/Analysis/DataStructureGraph.h"
|
||||||
#include "llvm/DerivedTypes.h"
|
#include "llvm/DerivedTypes.h"
|
||||||
#include "llvm/Function.h"
|
#include "llvm/Function.h"
|
||||||
#include "llvm/BasicBlock.h"
|
#include "llvm/BasicBlock.h"
|
||||||
@ -15,6 +15,42 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <sstream>
|
#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
|
// DSNode Class Implementation
|
||||||
//
|
//
|
||||||
@ -109,6 +145,8 @@ static string escapeLabel(const string &In) {
|
|||||||
return Label;
|
return Label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DSNode::dump() const { print(cerr); }
|
||||||
|
|
||||||
void DSNode::print(std::ostream &O) const {
|
void DSNode::print(std::ostream &O) const {
|
||||||
string Caption = escapeLabel(getCaption());
|
string Caption = escapeLabel(getCaption());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user