Index: src/IceDefs.h |
diff --git a/src/IceDefs.h b/src/IceDefs.h |
index 8aafbfd6c44a5502829f9fc0fd40a0d92e40ba4e..f5147c668c5afc86c99dfc8e8f576567a807db8f 100644 |
--- a/src/IceDefs.h |
+++ b/src/IceDefs.h |
@@ -29,6 +29,7 @@ |
#include "llvm/ADT/BitVector.h" |
#include "llvm/ADT/ilist.h" |
#include "llvm/ADT/ilist_node.h" |
+#include "llvm/ADT/iterator_range.h" |
#include "llvm/ADT/SmallBitVector.h" |
#include "llvm/ADT/SmallVector.h" |
#include "llvm/ADT/STLExtras.h" |
@@ -157,6 +158,17 @@ typedef uint32_t VerboseMask; |
typedef llvm::raw_ostream Ostream; |
typedef llvm::raw_fd_ostream Fdstream; |
+// Reverse range adaptors written in terms of llvm::make_range(). |
+template <typename T> |
+llvm::iterator_range<typename T::const_reverse_iterator> |
+reverse_range(const T &Container) { |
+ return llvm::make_range(Container.rbegin(), Container.rend()); |
+} |
+template <typename T> |
+llvm::iterator_range<typename T::reverse_iterator> reverse_range(T &Container) { |
+ return llvm::make_range(Container.rbegin(), Container.rend()); |
+} |
+ |
} // end of namespace Ice |
#endif // SUBZERO_SRC_ICEDEFS_H |