From 78268079587c14910f59023f02b8ea90d17cb6da Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 12 Jan 2015 19:14:15 +0000 Subject: [PATCH] IR: Separate out helper: resolveAfterOperandChange(), NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225654 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/Metadata.h | 1 + lib/IR/Metadata.cpp | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/include/llvm/IR/Metadata.h b/include/llvm/IR/Metadata.h index 81dcef984f5..d868c4bdc61 100644 --- a/include/llvm/IR/Metadata.h +++ b/include/llvm/IR/Metadata.h @@ -762,6 +762,7 @@ private: void handleChangedOperand(void *Ref, Metadata *New); void resolve(); + void resolveAfterOperandChange(Metadata *Old, Metadata *New); }; /// \brief Forward declaration of metadata. diff --git a/lib/IR/Metadata.cpp b/lib/IR/Metadata.cpp index 9cc258771db..f303b7d8a71 100644 --- a/lib/IR/Metadata.cpp +++ b/lib/IR/Metadata.cpp @@ -449,6 +449,22 @@ void GenericMDNode::resolve() { Uses->resolveAllUses(); } +void GenericMDNode::resolveAfterOperandChange(Metadata *Old, Metadata *New) { + assert(SubclassData32 != 0 && "Expected unresolved operands"); + + // 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(); + } + } else { + // Operands shouldn't become unresolved. + assert(isOperandUnresolved(New) && "Operand just became unresolved"); + } +} + void GenericMDNode::resolveCycles() { if (isResolved()) return; @@ -546,21 +562,8 @@ void GenericMDNode::handleChangedOperand(void *Ref, Metadata *New) { if (I == Store.end()) { Store.insert(this); - if (!isResolved()) { - assert(SubclassData32 != 0 && "Expected unresolved operands"); - - // 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(); - } - } else { - // Operands shouldn't become unresolved. - assert(isOperandUnresolved(New) && "Operand just became unresolved"); - } - } + if (!isResolved()) + resolveAfterOperandChange(Old, New); return; } -- 2.40.0