diff options
-rw-r--r-- | include/llvm/ADT/ilist | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/llvm/ADT/ilist b/include/llvm/ADT/ilist index 877e1445f4..1d01b63fe7 100644 --- a/include/llvm/ADT/ilist +++ b/include/llvm/ADT/ilist @@ -169,6 +169,26 @@ void operator+(int, ilist_iterator<T>); template<typename T> void operator+(ilist_iterator<T>,int); +// operator!=/operator== - Allow mixed comparisons without dereferencing +// the iterator, which could very likely be pointing to end(). +template<typename T> +bool operator!=(const T* LHS, const ilist_iterator<const T> &RHS) { + return LHS != RHS.getNodePtrUnchecked(); +} +template<typename T> +bool operator==(const T* LHS, const ilist_iterator<const T> &RHS) { + return LHS == RHS.getNodePtrUnchecked(); +} +template<typename T> +bool operator!=(T* LHS, const ilist_iterator<T> &RHS) { + return LHS != RHS.getNodePtrUnchecked(); +} +template<typename T> +bool operator==(T* LHS, const ilist_iterator<T> &RHS) { + return LHS == RHS.getNodePtrUnchecked(); +} + + // Allow ilist_iterators to convert into pointers to a node automatically when // used by the dyn_cast, cast, isa mechanisms... |