summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Metadata.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-12 19:12:37 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-12 19:12:37 +0000
commit5c5710b89006dc36ce852c7e9d4399da404dfdcf (patch)
treeab5a28a3688173dc511f16b79d18b09812a60008 /llvm/lib/IR/Metadata.cpp
parentf5d931f71664c4772abc68c1a89af4c7dbfa9b21 (diff)
downloadbcm5719-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.cpp19
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 {
OpenPOWER on IntegriCloud