[llvm] r189512 - r189495: Pull out some debug logic into a function for legibility

David Blaikie dblaikie at gmail.com
Wed Aug 28 13:42:43 PDT 2013


Author: dblaikie
Date: Wed Aug 28 15:42:43 2013
New Revision: 189512

URL: http://llvm.org/viewvc/llvm-project?rev=189512&view=rev
Log:
r189495: Pull out some debug logic into a function for legibility

Code review feedback from Eric Christopher.

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

Modified: llvm/trunk/lib/IR/DebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=189512&r1=189511&r2=189512&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DebugInfo.cpp (original)
+++ llvm/trunk/lib/IR/DebugInfo.cpp Wed Aug 28 15:42:43 2013
@@ -649,6 +649,21 @@ MDString *DICompositeType::getIdentifier
   return cast_or_null<MDString>(getField(DbgNode, 14));
 }
 
+#ifndef NDEBUG
+static void VerifySubsetOf(const MDNode *LHS, const MDNode *RHS) {
+  for (unsigned i = 0; i != LHS->getNumOperands(); ++i) {
+    // Skip the 'empty' list (that's a single i32 0, rather than truly empty)
+    if (i == 0 && isa<ConstantInt>(LHS->getOperand(i)))
+      continue;
+    const MDNode *E = cast<MDNode>(LHS->getOperand(i));
+    bool found = false;
+    for (unsigned j = 0; !found && j != RHS->getNumOperands(); ++j)
+      found = E == RHS->getOperand(j);
+    assert(found && "Losing a member during member list replacement");
+  }
+}
+#endif
+
 /// \brief Set the array of member DITypes.
 void DICompositeType::setTypeArray(DIArray Elements, DIArray TParams) {
   assert((!TParams || DbgNode->getNumOperands() == 15) &&
@@ -657,19 +672,9 @@ void DICompositeType::setTypeArray(DIArr
   TrackingVH<MDNode> N(*this);
   if (Elements) {
 #ifndef NDEBUG
-    // Check that we're not dropping any elements on the floor here
-    if (const MDNode *El = cast_or_null<MDNode>(N->getOperand(10))) {
-      for (unsigned i = 0; i != El->getNumOperands(); ++i) {
-        if (i == 0 && isa<ConstantInt>(El->getOperand(i)))
-          continue;
-        const MDNode *E = cast<MDNode>(El->getOperand(i));
-        bool found = false;
-        for (unsigned j = 0; !found && j != Elements.getNumElements(); ++j) {
-          found = E == Elements.getElement(j);
-        }
-        assert(found && "Losing a member during member list replacement");
-      }
-    }
+    // Check that the new list of members contains all the old members as well
+    if (const MDNode *El = cast_or_null<MDNode>(N->getOperand(10)))
+      VerifySubsetOf(El, Elements);
 #endif
     N->replaceOperandWith(10, Elements);
   }





More information about the llvm-commits mailing list