[llvm-commits] [llvm] r77959 - in /llvm/trunk: include/llvm/Metadata.h lib/VMCore/Metadata.cpp

Devang Patel dpatel at apple.com
Sun Aug 2 23:19:02 PDT 2009


Author: dpatel
Date: Mon Aug  3 01:19:01 2009
New Revision: 77959

URL: http://llvm.org/viewvc/llvm-project?rev=77959&view=rev
Log:
Add NamedMDNode destructor.

Modified:
    llvm/trunk/include/llvm/Metadata.h
    llvm/trunk/lib/VMCore/Metadata.cpp

Modified: llvm/trunk/include/llvm/Metadata.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Metadata.h?rev=77959&r1=77958&r2=77959&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Metadata.h (original)
+++ llvm/trunk/include/llvm/Metadata.h Mon Aug  3 01:19:01 2009
@@ -200,6 +200,15 @@
     return new NamedMDNode(N, MDs, NumMDs, M);
   }
 
+  /// eraseFromParent - Drop all references and remove the node from parent
+  /// module.
+  void eraseFromParent();
+
+  /// dropAllReferences - Remove all uses and clear node vector.
+  void dropAllReferences();
+
+  ~NamedMDNode();
+
   typedef SmallVectorImpl<WeakMetadataVH>::const_iterator const_elem_iterator;
 
   /// getParent - Get the module that holds this named metadata collection.

Modified: llvm/trunk/lib/VMCore/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=77959&r1=77958&r2=77959&view=diff

==============================================================================
--- llvm/trunk/lib/VMCore/Metadata.cpp (original)
+++ llvm/trunk/lib/VMCore/Metadata.cpp Mon Aug  3 01:19:01 2009
@@ -83,3 +83,20 @@
   if (ParentModule)
     ParentModule->getNamedMDList().push_back(this);
 }
+
+/// eraseFromParent - Drop all references and remove the node from parent
+/// module.
+void NamedMDNode::eraseFromParent() {
+  dropAllReferences();
+  getParent()->getNamedMDList().erase(this);
+}
+
+/// dropAllReferences - Remove all uses and clear node vector.
+void NamedMDNode::dropAllReferences() {
+  // FIXME: Update metadata use list.
+  Node.clear();
+}
+
+NamedMDNode::~NamedMDNode() {
+  dropAllReferences();
+}





More information about the llvm-commits mailing list