1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Bug fix: X.mergeWith(Y) was not updating Y if Y was a null node handle!

llvm-svn: 10953
This commit is contained in:
Chris Lattner 2004-01-22 16:31:08 +00:00
parent 7348bd20b1
commit da04e4d383

View File

@ -679,13 +679,20 @@ void DSNode::MergeNodes(DSNodeHandle& CurNodeH, DSNodeHandle& NH) {
// Offset indicates what offset the specified node is to be merged into the
// current node.
//
// The specified node may be a null pointer (in which case, nothing happens).
// The specified node may be a null pointer (in which case, we update it to
// point to this node).
//
void DSNode::mergeWith(const DSNodeHandle &NH, unsigned Offset) {
DSNode *N = NH.getNode();
if (N == 0 || (N == this && NH.getOffset() == Offset))
if (N == this && NH.getOffset() == Offset)
return; // Noop
// If the RHS is a null node, make it point to this node!
if (N == 0) {
NH.mergeWith(DSNodeHandle(this, Offset));
return;
}
assert(!N->isDeadNode() && !isDeadNode());
assert(!hasNoReferrers() && "Should not try to fold a useless node!");