[llvm] r225649 - IR: Don't allow operands to become unresolved

Duncan P. N. Exon Smith dexonsmith at apple.com
Mon Jan 12 10:59:40 PST 2015


Author: dexonsmith
Date: Mon Jan 12 12:59:40 2015
New Revision: 225649

URL: http://llvm.org/viewvc/llvm-project?rev=225649&view=rev
Log:
IR: Don't allow operands to become unresolved

Operands shouldn't change from being resolved to unresolved during graph
construction.  Simplify the logic based on that assumption.

Modified:
    llvm/trunk/lib/IR/Metadata.cpp

Modified: llvm/trunk/lib/IR/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Metadata.cpp?rev=225649&r1=225648&r2=225649&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Metadata.cpp (original)
+++ llvm/trunk/lib/IR/Metadata.cpp Mon Jan 12 12:59:40 2015
@@ -547,12 +547,16 @@ void GenericMDNode::handleChangedOperand
     if (!isResolved()) {
       // Check if the last unresolved operand has just been resolved; if so,
       // resolve this as well.
-      if (isOperandUnresolved(Old))
-        decrementUnresolvedOperands();
-      if (isOperandUnresolved(New))
-        incrementUnresolvedOperands();
-      if (!hasUnresolvedOperands())
-        resolve();
+      if (isOperandUnresolved(Old)) {
+        if (!isOperandUnresolved(New)) {
+          decrementUnresolvedOperands();
+          if (!hasUnresolvedOperands())
+            resolve();
+        }
+      } else {
+        // Operands shouldn't become unresolved.
+        assert(isOperandUnresolved(New) && "Operand just became unresolved");
+      }
     }
 
     return;





More information about the llvm-commits mailing list