IR: Separate out helper: resolveAfterOperandChange(), NFC
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 12 Jan 2015 19:14:15 +0000 (19:14 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 12 Jan 2015 19:14:15 +0000 (19:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225654 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 81dcef984f59b8e333a4fdcb52d7a3cd0006d0d0..d868c4bdc61ab33c2c3414349dda2a01b812b629 100644 (file)
@@ -762,6 +762,7 @@ private:
   void handleChangedOperand(void *Ref, Metadata *New);
 
   void resolve();
+  void resolveAfterOperandChange(Metadata *Old, Metadata *New);
 };
 
 /// \brief Forward declaration of metadata.
index 9cc258771db0249d4403ae138eccd7f3b5ddb20c..f303b7d8a71a461972a7b4d28f991b4709cd9255 100644 (file)
@@ -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;
   }