diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-01-12 19:12:37 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2015-01-12 19:12:37 +0000 |
commit | 5c5710b89006dc36ce852c7e9d4399da404dfdcf (patch) | |
tree | ab5a28a3688173dc511f16b79d18b09812a60008 /llvm/lib/IR/Metadata.cpp | |
parent | f5d931f71664c4772abc68c1a89af4c7dbfa9b21 (diff) | |
download | bcm5719-llvm-5c5710b89006dc36ce852c7e9d4399da404dfdcf.tar.gz bcm5719-llvm-5c5710b89006dc36ce852c7e9d4399da404dfdcf.zip |
IR: Use SubclassData32 directly, NFC
Simplify some logic by accessing `SubclassData32` directly instead of
relying on API.
llvm-svn: 225653
Diffstat (limited to 'llvm/lib/IR/Metadata.cpp')
-rw-r--r-- | llvm/lib/IR/Metadata.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp index 34ecf3dfc2d..9cc258771db 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; - OwnerMD->decrementUnresolvedOperands(); - if (!OwnerMD->hasUnresolvedOperands()) + if (!--OwnerMD->SubclassData32) OwnerMD->resolve(); } } @@ -418,12 +417,15 @@ GenericMDNode::GenericMDNode(LLVMContext &C, ArrayRef<Metadata *> Vals, return; // Check whether any operands are unresolved, requiring re-uniquing. + unsigned NumUnresolved = 0; for (const auto &Op : operands()) - if (isOperandUnresolved(Op)) - incrementUnresolvedOperands(); + NumUnresolved += unsigned(isOperandUnresolved(Op)); - if (hasUnresolvedOperands()) - ReplaceableUses.reset(new ReplaceableMetadataImpl); + if (!NumUnresolved) + return; + + ReplaceableUses.reset(new ReplaceableMetadataImpl); + SubclassData32 = NumUnresolved; } GenericMDNode::~GenericMDNode() { @@ -545,12 +547,13 @@ void GenericMDNode::handleChangedOperand(void *Ref, Metadata *New) { 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)) { - decrementUnresolvedOperands(); - if (!hasUnresolvedOperands()) + if (!--SubclassData32) resolve(); } } else { |