diff --git a/include/llvm/IR/Metadata.h b/include/llvm/IR/Metadata.h index 9992e5cbde1..9b044a37298 100644 --- a/include/llvm/IR/Metadata.h +++ b/include/llvm/IR/Metadata.h @@ -210,7 +210,7 @@ class NamedMDNode : public ilist_node { template class op_iterator_impl : - public std::iterator { + public std::iterator { const NamedMDNode *Node; unsigned Idx; op_iterator_impl(const NamedMDNode *N, unsigned i) : Node(N), Idx(i) { } @@ -232,6 +232,16 @@ class NamedMDNode : public ilist_node { operator++(); return tmp; } + op_iterator_impl &operator--() { + --Idx; + return *this; + } + op_iterator_impl operator--(int) { + op_iterator_impl tmp(*this); + operator--(); + return tmp; + } + op_iterator_impl &operator=(const op_iterator_impl &o) { Node = o.Node; Idx = o.Idx;