summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/Metadata.cpp
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-11-05 18:16:03 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-11-05 18:16:03 +0000
commitc5754a65e64126743644aec2631f165a0ac3ffe4 (patch)
treeb35cb05d283e1a11cf2012f2ff4b44116725a2cd /llvm/lib/IR/Metadata.cpp
parent8f093f4138e1ffafb7ee5344e012ba8dd952a055 (diff)
downloadbcm5719-llvm-c5754a65e64126743644aec2631f165a0ac3ffe4.tar.gz
bcm5719-llvm-c5754a65e64126743644aec2631f165a0ac3ffe4.zip
IR: MDNode => Value: NamedMDNode::getOperator()
Change `NamedMDNode::getOperator()` from returning `MDNode *` to returning `Value *`. To reduce boilerplate at some call sites, add a `getOperatorAsMDNode()` for named metadata that's expected to only return `MDNode` -- for now, that's everything, but debug node named metadata (such as llvm.dbg.cu and llvm.dbg.sp) will soon change. This is part of PR21433. Note that there's a follow-up patch to clang for the API change. llvm-svn: 221375
Diffstat (limited to 'llvm/lib/IR/Metadata.cpp')
-rw-r--r--llvm/lib/IR/Metadata.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp
index 3806fe4fd4e..59beb734184 100644
--- a/llvm/lib/IR/Metadata.cpp
+++ b/llvm/lib/IR/Metadata.cpp
@@ -555,14 +555,13 @@ MDNode *MDNode::getMostGenericRange(MDNode *A, MDNode *B) {
// NamedMDNode implementation.
//
-static SmallVector<TrackingVH<MDNode>, 4> &getNMDOps(void *Operands) {
- return *(SmallVector<TrackingVH<MDNode>, 4>*)Operands;
+static SmallVector<TrackingVH<Value>, 4> &getNMDOps(void *Operands) {
+ return *(SmallVector<TrackingVH<Value>, 4> *)Operands;
}
NamedMDNode::NamedMDNode(const Twine &N)
- : Name(N.str()), Parent(nullptr),
- Operands(new SmallVector<TrackingVH<MDNode>, 4>()) {
-}
+ : Name(N.str()), Parent(nullptr),
+ Operands(new SmallVector<TrackingVH<Value>, 4>()) {}
NamedMDNode::~NamedMDNode() {
dropAllReferences();
@@ -573,7 +572,7 @@ unsigned NamedMDNode::getNumOperands() const {
return (unsigned)getNMDOps(Operands).size();
}
-MDNode *NamedMDNode::getOperand(unsigned i) const {
+Value *NamedMDNode::getOperand(unsigned i) const {
assert(i < getNumOperands() && "Invalid Operand number!");
return &*getNMDOps(Operands)[i];
}
@@ -582,7 +581,7 @@ void NamedMDNode::addOperand(Value *V) {
auto *M = cast<MDNode>(V);
assert(!M->isFunctionLocal() &&
"NamedMDNode operands must not be function-local!");
- getNMDOps(Operands).push_back(TrackingVH<MDNode>(M));
+ getNMDOps(Operands).push_back(TrackingVH<Value>(M));
}
void NamedMDNode::eraseFromParent() {
OpenPOWER on IntegriCloud