aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2010-01-05 20:41:31 +0000
committerDevang Patel <dpatel@apple.com>2010-01-05 20:41:31 +0000
commit3e30c2a3c54c50246e6cccf0c8842619e29fe66c (patch)
tree687bd99218ce170b8ac4dd03ce4fe61bc89842b8 /lib
parent11acaa374cdcebb161bf0de5f244265d78a749c1 (diff)
downloadexternal_llvm-3e30c2a3c54c50246e6cccf0c8842619e29fe66c.tar.gz
external_llvm-3e30c2a3c54c50246e6cccf0c8842619e29fe66c.tar.bz2
external_llvm-3e30c2a3c54c50246e6cccf0c8842619e29fe66c.zip
NamedMDNode is a collection MDNodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92761 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/AsmParser/LLParser.cpp3
-rw-r--r--lib/Bitcode/Reader/BitcodeReader.cpp6
-rw-r--r--lib/VMCore/Metadata.cpp22
3 files changed, 15 insertions, 16 deletions
diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp
index 01cd531dac..0a3617575e 100644
--- a/lib/AsmParser/LLParser.cpp
+++ b/lib/AsmParser/LLParser.cpp
@@ -510,12 +510,11 @@ bool LLParser::ParseNamedMetadata() {
ParseToken(lltok::lbrace, "Expected '{' here"))
return true;
- SmallVector<MetadataBase *, 8> Elts;
+ SmallVector<MDNode *, 8> Elts;
do {
if (ParseToken(lltok::exclaim, "Expected '!' here"))
return true;
- // FIXME: This rejects MDStrings. Are they legal in an named MDNode or not?
MDNode *N = 0;
if (ParseMDNodeID(N)) return true;
Elts.push_back(N);
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp
index 98243e0e24..c8097a0999 100644
--- a/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -787,11 +787,11 @@ bool BitcodeReader::ParseMetadata() {
// Read named metadata elements.
unsigned Size = Record.size();
- SmallVector<MetadataBase*, 8> Elts;
+ SmallVector<MDNode *, 8> Elts;
for (unsigned i = 0; i != Size; ++i) {
Value *MD = MDValueList.getValueFwdRef(Record[i]);
- if (MetadataBase *B = dyn_cast<MetadataBase>(MD))
- Elts.push_back(B);
+ if (MDNode *B = dyn_cast_or_null<MDNode>(MD))
+ Elts.push_back(B);
}
Value *V = NamedMDNode::Create(Context, Name.str(), Elts.data(),
Elts.size(), TheModule);
diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp
index 8e9aab93a1..09cd1d5cba 100644
--- a/lib/VMCore/Metadata.cpp
+++ b/lib/VMCore/Metadata.cpp
@@ -210,21 +210,21 @@ void MDNode::replaceOperand(MDNodeOperand *Op, Value *To) {
//===----------------------------------------------------------------------===//
// NamedMDNode implementation.
//
-static SmallVector<TrackingVH<MetadataBase>, 4> &getNMDOps(void *Operands) {
- return *(SmallVector<TrackingVH<MetadataBase>, 4>*)Operands;
+static SmallVector<WeakVH, 4> &getNMDOps(void *Operands) {
+ return *(SmallVector<WeakVH, 4>*)Operands;
}
NamedMDNode::NamedMDNode(LLVMContext &C, const Twine &N,
- MetadataBase *const *MDs,
+ MDNode *const *MDs,
unsigned NumMDs, Module *ParentModule)
: MetadataBase(Type::getMetadataTy(C), Value::NamedMDNodeVal), Parent(0) {
setName(N);
- Operands = new SmallVector<TrackingVH<MetadataBase>, 4>();
+ Operands = new SmallVector<WeakVH, 4>();
- SmallVector<TrackingVH<MetadataBase>, 4> &Node = getNMDOps(Operands);
+ SmallVector<WeakVH, 4> &Node = getNMDOps(Operands);
for (unsigned i = 0; i != NumMDs; ++i)
- Node.push_back(TrackingVH<MetadataBase>(MDs[i]));
+ Node.push_back(WeakVH(MDs[i]));
if (ParentModule)
ParentModule->getNamedMDList().push_back(this);
@@ -232,7 +232,7 @@ NamedMDNode::NamedMDNode(LLVMContext &C, const Twine &N,
NamedMDNode *NamedMDNode::Create(const NamedMDNode *NMD, Module *M) {
assert(NMD && "Invalid source NamedMDNode!");
- SmallVector<MetadataBase *, 4> Elems;
+ SmallVector<MDNode *, 4> Elems;
Elems.reserve(NMD->getNumOperands());
for (unsigned i = 0, e = NMD->getNumOperands(); i != e; ++i)
@@ -252,14 +252,14 @@ unsigned NamedMDNode::getNumOperands() const {
}
/// getOperand - Return specified operand.
-MetadataBase *NamedMDNode::getOperand(unsigned i) const {
+MDNode *NamedMDNode::getOperand(unsigned i) const {
assert(i < getNumOperands() && "Invalid Operand number!");
- return getNMDOps(Operands)[i];
+ return dyn_cast_or_null<MDNode>(getNMDOps(Operands)[i]);
}
/// addOperand - Add metadata Operand.
-void NamedMDNode::addOperand(MetadataBase *M) {
- getNMDOps(Operands).push_back(TrackingVH<MetadataBase>(M));
+void NamedMDNode::addOperand(MDNode *M) {
+ getNMDOps(Operands).push_back(WeakVH(M));
}
/// eraseFromParent - Drop all references and remove the node from parent