Add an assert to MDNode::deleteTemporary check that the node being deleted
authorDan Gohman <gohman@apple.com>
Sat, 21 Aug 2010 02:52:29 +0000 (02:52 +0000)
committerDan Gohman <gohman@apple.com>
Sat, 21 Aug 2010 02:52:29 +0000 (02:52 +0000)
is not non-temporary.

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

lib/VMCore/Metadata.cpp

index 236ddaa15b2a833a5086b04baafcc7526915f60b..909c33d55bca602aab3f0038d0dd894b56e6d2ca 100644 (file)
@@ -257,10 +257,12 @@ MDNode *MDNode::getTemporary(LLVMContext &Context, Value *const *Vals,
 
 void MDNode::deleteTemporary(MDNode *N) {
   assert(N->use_empty() && "Temporary MDNode has uses!");
+  assert(!N->getContext().pImpl->MDNodeSet.RemoveNode(N) &&
+         "Deleting a non-temporary node!");
   assert((N->getSubclassDataFromValue() & NotUniquedBit) &&
          "Temporary MDNode does not have NotUniquedBit set!");
   assert((N->getSubclassDataFromValue() & DestroyFlag) == 0 &&
-         "Temporary MDNode does has DestroyFlag set!");
+         "Temporary MDNode has DestroyFlag set!");
   N->setValueSubclassData(N->getSubclassDataFromValue() |
                           DestroyFlag);
   LeakDetector::removeGarbageObject(N);