Add comments explaining why it's not necessary to include the
authorDan Gohman <gohman@apple.com>
Mon, 30 Aug 2010 21:18:41 +0000 (21:18 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 30 Aug 2010 21:18:41 +0000 (21:18 +0000)
is-function-local flag in metadata uniquing bits.

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

lib/VMCore/Metadata.cpp

index 17e0bc28da0fff71ee1ba91de0fa487746e45c2d..b9f97dbf6037a1fb1749752b6923937b597bf700 100644 (file)
@@ -190,6 +190,8 @@ MDNode *MDNode::getMDNode(LLVMContext &Context, Value *const *Vals,
 
   // Add all the operand pointers. Note that we don't have to add the
   // isFunctionLocal bit because that's implied by the operands.
+  // Note that if the operands are later nulled out, the node will be
+  // removed from the uniquing map.
   FoldingSetNodeID ID;
   for (unsigned i = 0; i != NumVals; ++i)
     ID.AddPointer(Vals[i]);
@@ -276,6 +278,8 @@ Value *MDNode::getOperand(unsigned i) const {
 void MDNode::Profile(FoldingSetNodeID &ID) const {
   // Add all the operand pointers. Note that we don't have to add the
   // isFunctionLocal bit because that's implied by the operands.
+  // Note that if the operands are later nulled out, the node will be
+  // removed from the uniquing map.
   for (unsigned i = 0, e = getNumOperands(); i != e; ++i)
     ID.AddPointer(getOperand(i));
 }
@@ -326,7 +330,8 @@ void MDNode::replaceOperand(MDNodeOperand *Op, Value *To) {
 
   // If we are dropping an argument to null, we choose to not unique the MDNode
   // anymore.  This commonly occurs during destruction, and uniquing these
-  // brings little reuse.
+  // brings little reuse.  Also, this means we don't need to include
+  // isFunctionLocal bits in FoldingSetNodeIDs for MDNodes.
   if (To == 0) {
     setIsNotUniqued();
     return;