From 54b53edbd9e0226cc1669ac12e96aa24f7690c2f Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 12 Jan 2015 18:59:40 +0000 Subject: [PATCH] IR: Don't allow operands to become unresolved Operands shouldn't change from being resolved to unresolved during graph construction. Simplify the logic based on that assumption. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225649 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/Metadata.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/IR/Metadata.cpp b/lib/IR/Metadata.cpp index 6cb6efe3d66..34ecf3dfc2d 100644 --- a/lib/IR/Metadata.cpp +++ b/lib/IR/Metadata.cpp @@ -547,12 +547,16 @@ void GenericMDNode::handleChangedOperand(void *Ref, Metadata *New) { if (!isResolved()) { // Check if the last unresolved operand has just been resolved; if so, // resolve this as well. - if (isOperandUnresolved(Old)) - decrementUnresolvedOperands(); - if (isOperandUnresolved(New)) - incrementUnresolvedOperands(); - if (!hasUnresolvedOperands()) - resolve(); + if (isOperandUnresolved(Old)) { + if (!isOperandUnresolved(New)) { + decrementUnresolvedOperands(); + if (!hasUnresolvedOperands()) + resolve(); + } + } else { + // Operands shouldn't become unresolved. + assert(isOperandUnresolved(New) && "Operand just became unresolved"); + } } return; -- 2.34.1