diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/Analysis/DSNode.h | 13 | ||||
-rw-r--r-- | llvm/include/llvm/Analysis/DSSupport.h | 4 |
2 files changed, 10 insertions, 7 deletions
diff --git a/llvm/include/llvm/Analysis/DSNode.h b/llvm/include/llvm/Analysis/DSNode.h index f206c3e5ada..1008789046c 100644 --- a/llvm/include/llvm/Analysis/DSNode.h +++ b/llvm/include/llvm/Analysis/DSNode.h @@ -326,7 +326,7 @@ inline DSNode *DSNodeHandle::getNode() const { return HandleForwarding(); } -inline void DSNodeHandle::setNode(DSNode *n) { +inline void DSNodeHandle::setNode(DSNode *n) const { assert(!n || !n->getForwardNode() && "Cannot set node to a forwarded node!"); if (N) N->NumReferrers--; N = n; @@ -377,11 +377,14 @@ inline void DSNodeHandle::addEdgeTo(unsigned Off, const DSNodeHandle &Node) { /// mergeWith - Merge the logical node pointed to by 'this' with the node /// pointed to by 'N'. /// -inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) { - if (N != 0) +inline void DSNodeHandle::mergeWith(const DSNodeHandle &Node) const { + if (!isNull()) getNode()->mergeWith(Node, Offset); - else // No node to merge with, so just point to Node - *this = Node; + else { // No node to merge with, so just point to Node + Offset = 0; + setNode(Node.getNode()); + Offset = Node.getOffset(); + } } } // End llvm namespace diff --git a/llvm/include/llvm/Analysis/DSSupport.h b/llvm/include/llvm/Analysis/DSSupport.h index 15d948f897c..da8afa5a875 100644 --- a/llvm/include/llvm/Analysis/DSSupport.h +++ b/llvm/include/llvm/Analysis/DSSupport.h @@ -93,7 +93,7 @@ public: inline DSNode *getNode() const; // Defined inline in DSNode.h unsigned getOffset() const { return Offset; } - inline void setNode(DSNode *N); // Defined inline in DSNode.h + inline void setNode(DSNode *N) const; // Defined inline in DSNode.h void setOffset(unsigned O) { //assert((!N || Offset < N->Size || (N->Size == 0 && Offset == 0) || // !N->ForwardNH.isNull()) && "Node handle offset out of range!"); @@ -108,7 +108,7 @@ public: /// mergeWith - Merge the logical node pointed to by 'this' with the node /// pointed to by 'N'. /// - void mergeWith(const DSNodeHandle &N); + void mergeWith(const DSNodeHandle &N) const; // hasLink - Return true if there is a link at the specified offset... inline bool hasLink(unsigned Num) const; |