diff options
Diffstat (limited to 'llvm/lib/IR/Metadata.cpp')
-rw-r--r-- | llvm/lib/IR/Metadata.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp index ec9b8801b81..f78e7d2534d 100644 --- a/llvm/lib/IR/Metadata.cpp +++ b/llvm/lib/IR/Metadata.cpp @@ -228,8 +228,7 @@ void ReplaceableMetadataImpl::resolveAllUses(bool ResolveUsers) { continue; if (OwnerMD->isResolved()) continue; - if (!--OwnerMD->SubclassData32) - OwnerMD->resolve(); + OwnerMD->decrementUnresolvedOperandCount(); } } @@ -455,16 +454,19 @@ void GenericMDNode::resolveAfterOperandChange(Metadata *Old, Metadata *New) { // Check if the last unresolved operand has just been resolved; if so, // resolve this as well. if (isOperandUnresolved(Old)) { - if (!isOperandUnresolved(New)) { - if (!--SubclassData32) - resolve(); - } + if (!isOperandUnresolved(New)) + decrementUnresolvedOperandCount(); } else { // Operands shouldn't become unresolved. assert(isOperandUnresolved(New) && "Operand just became unresolved"); } } +void GenericMDNode::decrementUnresolvedOperandCount() { + if (!--SubclassData32) + resolve(); +} + void GenericMDNode::resolveCycles() { if (isResolved()) return; |