forked from OSchip/llvm-project
IR: MDNode => Value: Add Instruction::getMDNode()
Add `Instruction::getMDNode()` that casts to `MDNode` before changing `Instruction::getMetadata()` to return `Value`. This avoids adding `cast_or_null<MDNode>` boiler-plate throughout the code. Part of PR21433. llvm-svn: 221023
This commit is contained in:
parent
ada6d1693e
commit
7c4fc4e5ae
|
@ -153,6 +153,24 @@ public:
|
|||
return getMetadataImpl(Kind);
|
||||
}
|
||||
|
||||
/// Get the the metadata as an MDNode.
|
||||
///
|
||||
/// \pre Any KindID metadata is implemented using \a MDNode.
|
||||
MDNode *getMDNode(unsigned KindID) const {
|
||||
if (!hasMetadata())
|
||||
return nullptr;
|
||||
return getMDNodeImpl(KindID);
|
||||
}
|
||||
|
||||
/// Get the the metadata as an MDNode.
|
||||
///
|
||||
/// \pre Any KindID metadata is implemented using \a MDNode.
|
||||
MDNode *getMDNode(StringRef Kind) const {
|
||||
if (!hasMetadata())
|
||||
return nullptr;
|
||||
return getMDNodeImpl(Kind);
|
||||
}
|
||||
|
||||
/// getAllMetadata - Get all metadata attached to this Instruction. The first
|
||||
/// element of each pair returned is the KindID, the second element is the
|
||||
/// metadata value. This list is returned sorted by the KindID.
|
||||
|
@ -273,6 +291,8 @@ private:
|
|||
// These are all implemented in Metadata.cpp.
|
||||
MDNode *getMetadataImpl(unsigned KindID) const;
|
||||
MDNode *getMetadataImpl(StringRef Kind) const;
|
||||
MDNode *getMDNodeImpl(unsigned KindID) const;
|
||||
MDNode *getMDNodeImpl(StringRef Kind) const;
|
||||
void getAllMetadataImpl(SmallVectorImpl<std::pair<unsigned,MDNode*> > &)const;
|
||||
void getAllMetadataOtherThanDebugLocImpl(SmallVectorImpl<std::pair<unsigned,
|
||||
MDNode*> > &) const;
|
||||
|
|
|
@ -609,6 +609,14 @@ MDNode *Instruction::getMetadataImpl(StringRef Kind) const {
|
|||
return getMetadataImpl(getContext().getMDKindID(Kind));
|
||||
}
|
||||
|
||||
MDNode *Instruction::getMDNodeImpl(unsigned KindID) const {
|
||||
return getMetadataImpl(KindID);
|
||||
}
|
||||
|
||||
MDNode *Instruction::getMDNodeImpl(StringRef Kind) const {
|
||||
return getMetadataImpl(Kind);
|
||||
}
|
||||
|
||||
void Instruction::dropUnknownMetadata(ArrayRef<unsigned> KnownIDs) {
|
||||
SmallSet<unsigned, 5> KnownSet;
|
||||
KnownSet.insert(KnownIDs.begin(), KnownIDs.end());
|
||||
|
|
Loading…
Reference in New Issue