diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h index be0f54974fde..db072ca6616d 100644 --- a/llvm/include/llvm/IR/Metadata.h +++ b/llvm/include/llvm/IR/Metadata.h @@ -307,7 +307,7 @@ public: MDNode *getOperand(unsigned i) const; unsigned getNumOperands() const; - void addOperand(MDNode *M); + void addOperand(Value *M); StringRef getName() const; void print(raw_ostream &ROS) const; void dump() const; diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp index 0b3376c9e9c7..3806fe4fd4e1 100644 --- a/llvm/lib/IR/Metadata.cpp +++ b/llvm/lib/IR/Metadata.cpp @@ -578,7 +578,8 @@ MDNode *NamedMDNode::getOperand(unsigned i) const { return &*getNMDOps(Operands)[i]; } -void NamedMDNode::addOperand(MDNode *M) { +void NamedMDNode::addOperand(Value *V) { + auto *M = cast(V); assert(!M->isFunctionLocal() && "NamedMDNode operands must not be function-local!"); getNMDOps(Operands).push_back(TrackingVH(M));