forked from OSchip/llvm-project
Add comments, allow DSNode "copy ctor" to ignore outgoing links, add more
structured access to the globals list, add a couple helper methods. llvm-svn: 10982
This commit is contained in:
parent
748b56f76b
commit
e11e9b9e15
|
@ -97,9 +97,16 @@ public:
|
||||||
private:
|
private:
|
||||||
unsigned short NodeType;
|
unsigned short NodeType;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/// DSNode ctor - Create a node of the specified type, inserting it into the
|
||||||
|
/// specified graph.
|
||||||
DSNode(const Type *T, DSGraph *G);
|
DSNode(const Type *T, DSGraph *G);
|
||||||
DSNode(const DSNode &, DSGraph *G);
|
|
||||||
|
/// DSNode "copy ctor" - Copy the specified node, inserting it into the
|
||||||
|
/// specified graph. If NullLinks is true, then null out all of the links,
|
||||||
|
/// but keep the same number of them. This can be used for efficiency if the
|
||||||
|
/// links are just going to be clobbered anyway.
|
||||||
|
DSNode(const DSNode &, DSGraph *G, bool NullLinks = false);
|
||||||
|
|
||||||
~DSNode() {
|
~DSNode() {
|
||||||
dropAllReferences();
|
dropAllReferences();
|
||||||
|
@ -241,14 +248,24 @@ public:
|
||||||
/// also marks the node with the 'G' flag if it does not already have it.
|
/// also marks the node with the 'G' flag if it does not already have it.
|
||||||
///
|
///
|
||||||
void addGlobal(GlobalValue *GV);
|
void addGlobal(GlobalValue *GV);
|
||||||
|
void mergeGlobals(const std::vector<GlobalValue*> &RHS);
|
||||||
const std::vector<GlobalValue*> &getGlobals() const { return Globals; }
|
const std::vector<GlobalValue*> &getGlobals() const { return Globals; }
|
||||||
|
|
||||||
|
typedef std::vector<GlobalValue*>::const_iterator global_iterator;
|
||||||
|
global_iterator global_begin() const { return Globals.begin(); }
|
||||||
|
global_iterator global_end() const { return Globals.end(); }
|
||||||
|
|
||||||
|
|
||||||
/// maskNodeTypes - Apply a mask to the node types bitfield.
|
/// maskNodeTypes - Apply a mask to the node types bitfield.
|
||||||
///
|
///
|
||||||
void maskNodeTypes(unsigned Mask) {
|
void maskNodeTypes(unsigned Mask) {
|
||||||
NodeType &= Mask;
|
NodeType &= Mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mergeNodeFlags(unsigned RHS) {
|
||||||
|
NodeType |= RHS;
|
||||||
|
}
|
||||||
|
|
||||||
/// getNodeFlags - Return all of the flags set on the node. If the DEAD flag
|
/// getNodeFlags - Return all of the flags set on the node. If the DEAD flag
|
||||||
/// is set, hide it from the caller.
|
/// is set, hide it from the caller.
|
||||||
unsigned getNodeFlags() const { return NodeType & ~DEAD; }
|
unsigned getNodeFlags() const { return NodeType & ~DEAD; }
|
||||||
|
@ -320,7 +337,7 @@ private:
|
||||||
inline DSNode *DSNodeHandle::getNode() const {
|
inline DSNode *DSNodeHandle::getNode() const {
|
||||||
assert((!N || Offset < N->Size || (N->Size == 0 && Offset == 0) ||
|
assert((!N || Offset < N->Size || (N->Size == 0 && Offset == 0) ||
|
||||||
!N->ForwardNH.isNull()) && "Node handle offset out of range!");
|
!N->ForwardNH.isNull()) && "Node handle offset out of range!");
|
||||||
if (!N || N->ForwardNH.isNull())
|
if (N == 0 || N->ForwardNH.isNull())
|
||||||
return N;
|
return N;
|
||||||
|
|
||||||
return HandleForwarding();
|
return HandleForwarding();
|
||||||
|
|
Loading…
Reference in New Issue