mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221375 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -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() {
|
||||
|
Reference in New Issue
Block a user