diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h --- a/llvm/include/llvm/IR/Metadata.h +++ b/llvm/include/llvm/IR/Metadata.h @@ -1287,7 +1287,7 @@ return const_cast(this)->mutable_end(); } - op_range operands() const { return op_range(op_begin(), op_end()); } + ArrayRef operands() const { return getHeader().operands(); } const MDOperand &getOperand(unsigned I) const { assert(I < getNumOperands() && "Out of range"); @@ -1345,7 +1345,9 @@ StorageType Storage, bool ShouldCreate = true); TempMDTuple cloneImpl() const { - return getTemporary(getContext(), SmallVector(operands())); + ArrayRef Operands = operands(); + return getTemporary(getContext(), SmallVector( + Operands.begin(), Operands.end())); } public: diff --git a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp b/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp --- a/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp +++ b/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp @@ -303,7 +303,7 @@ /// given offset. Update the offset to be relative to the field type. TBAAStructTypeNode getField(uint64_t &Offset) const { bool NewFormat = isNewFormat(); - const ArrayRef Operands(Node->op_begin(), Node->op_end()); + const ArrayRef Operands = Node->operands(); const unsigned NumOperands = Operands.size(); if (NewFormat) { @@ -811,7 +811,8 @@ return nullptr; // Otherwise, create TBAA with the new Len - SmallVector NextNodes(MD->operands()); + ArrayRef MDOperands = MD->operands(); + SmallVector NextNodes(MDOperands.begin(), MDOperands.end()); ConstantInt *PreviousSize = mdconst::extract(NextNodes[3]); // Don't create a new MDNode if it is the same length. diff --git a/llvm/lib/Linker/IRMover.cpp b/llvm/lib/Linker/IRMover.cpp --- a/llvm/lib/Linker/IRMover.cpp +++ b/llvm/lib/Linker/IRMover.cpp @@ -1362,8 +1362,10 @@ "Expected MDTuple when appending module flags"); if (DstValue->isDistinct()) return dyn_cast(DstValue); + ArrayRef DstOperands = DstValue->operands(); MDTuple *New = MDTuple::getDistinct( - DstM.getContext(), SmallVector(DstValue->operands())); + DstM.getContext(), + SmallVector(DstOperands.begin(), DstOperands.end())); Metadata *FlagOps[] = {DstOp->getOperand(0), ID, New}; MDNode *Flag = MDTuple::getDistinct(DstM.getContext(), FlagOps); DstModFlags->setOperand(DstIndex, Flag);