[llvm-commits] [llvm] r84113 - in /llvm/trunk: include/llvm/Metadata.h lib/VMCore/Metadata.cpp
Devang Patel
dpatel at apple.com
Wed Oct 14 10:02:49 PDT 2009
Author: dpatel
Date: Wed Oct 14 12:02:49 2009
New Revision: 84113
URL: http://llvm.org/viewvc/llvm-project?rev=84113&view=rev
Log:
Add copyMD to copy metadata from one instruction to another instruction.
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=84113&r1=84112&r2=84113&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Metadata.h (original)
+++ llvm/trunk/include/llvm/Metadata.h Wed Oct 14 12:02:49 2009
@@ -351,6 +351,10 @@
/// removeMDs - Remove all metadata attached with an instruction.
void removeMDs(const Instruction *Inst);
+ /// copyMD - If metadata is attached with Instruction In1 then attach
+ /// the same metadata to In2.
+ void copyMD(Instruction *In1, Instruction *In2);
+
/// getHandlerNames - Get handler names. This is used by bitcode
/// writer.
const StringMap<unsigned> *getHandlerNames();
Modified: llvm/trunk/lib/VMCore/Metadata.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Metadata.cpp?rev=84113&r1=84112&r2=84113&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Metadata.cpp (original)
+++ llvm/trunk/lib/VMCore/Metadata.cpp Wed Oct 14 12:02:49 2009
@@ -359,6 +359,20 @@
MetadataStore.erase(I);
}
+/// copyMD - If metadata is attached with Instruction In1 then attach
+/// the same metadata to In2.
+void MetadataContext::copyMD(Instruction *In1, Instruction *In2) {
+ assert (In1 && In2 && "Invalid instruction!");
+ MDStoreTy::iterator I = MetadataStore.find(In1);
+ if (I == MetadataStore.end())
+ return;
+
+ MDMapTy &In1Info = I->second;
+ MDMapTy In2Info;
+ for (MDMapTy::iterator I = In1Info.begin(), E = In1Info.end(); I != E; ++I)
+ if (MDNode *MD = dyn_cast_or_null<MDNode>(I->second))
+ addMD(I->first, MD, In2);
+}
/// getMD - Get the metadata of given kind attached with an Instruction.
/// If the metadata is not found then return 0.
@@ -416,3 +430,4 @@
// FIXME : Give custom handlers a chance to override this.
ValueIsCloned(I1, I2);
}
+
More information about the llvm-commits
mailing list