summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/Analysis/DSNode.h13
-rw-r--r--llvm/include/llvm/Analysis/DSSupport.h4
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;
OpenPOWER on IntegriCloud