IR: Use SubclassData32 directly, NFC
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 12 Jan 2015 19:12:37 +0000 (19:12 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 12 Jan 2015 19:12:37 +0000 (19:12 +0000)
Simplify some logic by accessing `SubclassData32` directly instead of
relying on API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225653 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/Metadata.h
lib/IR/Metadata.cpp

index 4d0a04ea62336eb6037b219f33b3160a591e72ee..81dcef984f59b8e333a4fdcb52d7a3cd0006d0d0 100644 (file)
@@ -761,9 +761,6 @@ public:
 private:
   void handleChangedOperand(void *Ref, Metadata *New);
 
-  bool hasUnresolvedOperands() const { return SubclassData32; }
-  void incrementUnresolvedOperands() { ++SubclassData32; }
-  void decrementUnresolvedOperands() { --SubclassData32; }
   void resolve();
 };
 
index 34ecf3dfc2d6204224484cbe20cce57d9c614d0e..9cc258771db0249d4403ae138eccd7f3b5ddb20c 100644 (file)
@@ -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 {