[llvm-commits] [llvm] r83107 - in /llvm/trunk: include/llvm/Metadata.h lib/VMCore/Metadata.cpp
Devang Patel
dpatel at apple.com
Tue Sep 29 13:42:25 PDT 2009
Author: dpatel
Date: Tue Sep 29 15:42:25 2009
New Revision: 83107
URL: http://llvm.org/viewvc/llvm-project?rev=83107&view=rev
Log:
Add removeMD().
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=83107&r1=83106&r2=83107&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Metadata.h (original)
+++ llvm/trunk/include/llvm/Metadata.h Tue Sep 29 15:42:25 2009
@@ -345,6 +345,12 @@
/// addMD - Attach the metadata of given kind with an Instruction.
void addMD(unsigned Kind, MDNode *Node, Instruction *Inst);
+ /// removeMD - Remove metadata of given kind attached with an instuction.
+ void removeMD(unsigned Kind, Instruction *Inst);
+
+ /// removeMDs - Remove all metadata attached with an instruction.
+ void removeMDs(const Instruction *Inst);
+
/// getHandlerNames - Get handler names. This is used by bitcode
/// writer.
const StringMap<unsigned> *getHandlerNames();
@@ -352,7 +358,9 @@
/// ValueIsDeleted - This handler is used to update metadata store
/// when a value is deleted.
void ValueIsDeleted(const Value *V) {}
- void ValueIsDeleted(const Instruction *Inst);
+ void ValueIsDeleted(const Instruction *Inst) {
+ removeMDs(Inst);
+ }
/// ValueIsCloned - This handler is used to update metadata store
/// when In1 is cloned to create In2.
Modified: llvm/trunk/lib/VMCore/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=83107&r1=83106&r2=83107&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Metadata.cpp (original)
+++ llvm/trunk/lib/VMCore/Metadata.cpp Tue Sep 29 15:42:25 2009
@@ -327,6 +327,39 @@
return;
}
+/// removeMD - Remove metadata of given kind attached with an instuction.
+void MetadataContext::removeMD(unsigned Kind, Instruction *Inst) {
+ MDStoreTy::iterator I = MetadataStore.find(Inst);
+ if (I == MetadataStore.end())
+ return;
+
+ MDMapTy &Info = I->second;
+ for (MDMapTy::iterator MI = Info.begin(), ME = Info.end(); MI != ME; ++MI) {
+ MDPairTy &P = *MI;
+ if (P.first == Kind) {
+ Info.erase(MI);
+ return;
+ }
+ }
+
+ return;
+}
+
+/// removeMDs - Remove all metadata attached with an instruction.
+void MetadataContext::removeMDs(const Instruction *Inst) {
+ // Find Metadata handles for this instruction.
+ MDStoreTy::iterator I = MetadataStore.find(Inst);
+ assert (I != MetadataStore.end() && "Invalid custom metadata info!");
+ MDMapTy &Info = I->second;
+
+ // FIXME : Give all metadata handlers a chance to adjust.
+
+ // Remove the entries for this instruction.
+ Info.clear();
+ MetadataStore.erase(I);
+}
+
+
/// getMD - Get the metadata of given kind attached with an Instruction.
/// If the metadata is not found then return 0.
MDNode *MetadataContext::getMD(unsigned MDKind, const Instruction *Inst) {
@@ -356,21 +389,6 @@
return &MDHandlerNames;
}
-/// ValueIsDeleted - This handler is used to update metadata store
-/// when a value is deleted.
-void MetadataContext::ValueIsDeleted(const Instruction *Inst) {
- // Find Metadata handles for this instruction.
- MDStoreTy::iterator I = MetadataStore.find(Inst);
- assert (I != MetadataStore.end() && "Invalid custom metadata info!");
- MDMapTy &Info = I->second;
-
- // FIXME : Give all metadata handlers a chance to adjust.
-
- // Remove the entries for this instruction.
- Info.clear();
- MetadataStore.erase(I);
-}
-
/// ValueIsCloned - This handler is used to update metadata store
/// when In1 is cloned to create In2.
void MetadataContext::ValueIsCloned(const Instruction *In1, Instruction *In2) {
More information about the llvm-commits
mailing list