mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-04 10:04:33 +00:00
Add copyMD to copy metadata from one instruction to another instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84113 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9649344cb5
commit
5db2c52270
@ -351,6 +351,10 @@ public:
|
|||||||
/// removeMDs - Remove all metadata attached with an instruction.
|
/// removeMDs - Remove all metadata attached with an instruction.
|
||||||
void removeMDs(const Instruction *Inst);
|
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
|
/// getHandlerNames - Get handler names. This is used by bitcode
|
||||||
/// writer.
|
/// writer.
|
||||||
const StringMap<unsigned> *getHandlerNames();
|
const StringMap<unsigned> *getHandlerNames();
|
||||||
|
@ -359,6 +359,20 @@ void MetadataContext::removeMDs(const Instruction *Inst) {
|
|||||||
MetadataStore.erase(I);
|
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.
|
/// getMD - Get the metadata of given kind attached with an Instruction.
|
||||||
/// If the metadata is not found then return 0.
|
/// If the metadata is not found then return 0.
|
||||||
@ -416,3 +430,4 @@ void MetadataContext::ValueIsRAUWd(Value *V1, Value *V2) {
|
|||||||
// FIXME : Give custom handlers a chance to override this.
|
// FIXME : Give custom handlers a chance to override this.
|
||||||
ValueIsCloned(I1, I2);
|
ValueIsCloned(I1, I2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user