diff options
Diffstat (limited to 'include/llvm/ADT')
-rw-r--r-- | include/llvm/ADT/APInt.h | 5 | ||||
-rw-r--r-- | include/llvm/ADT/GraphTraits.h | 1 | ||||
-rw-r--r-- | include/llvm/ADT/ImmutableSet.h | 6 | ||||
-rw-r--r-- | include/llvm/ADT/PointerUnion.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/PostOrderIterator.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/PriorityWorklist.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/SCCIterator.h | 10 | ||||
-rw-r--r-- | include/llvm/ADT/SmallPtrSet.h | 6 | ||||
-rw-r--r-- | include/llvm/ADT/SmallVector.h | 21 | ||||
-rw-r--r-- | include/llvm/ADT/SparseMultiSet.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/StringExtras.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/StringRef.h | 2 | ||||
-rw-r--r-- | include/llvm/ADT/iterator_range.h | 2 |
13 files changed, 37 insertions, 26 deletions
diff --git a/include/llvm/ADT/APInt.h b/include/llvm/ADT/APInt.h index fe75e25bd8d2..ef9c66d2d700 100644 --- a/include/llvm/ADT/APInt.h +++ b/include/llvm/ADT/APInt.h @@ -392,6 +392,11 @@ public: /// not. bool isNullValue() const { return !*this; } + /// \brief Determine if this is a value of 1. + /// + /// This checks to see if the value of this APInt is one. + bool isOneValue() const { return getActiveBits() == 1; } + /// \brief Determine if this is the largest unsigned value. /// /// This checks to see if the value of this APInt is the maximum unsigned diff --git a/include/llvm/ADT/GraphTraits.h b/include/llvm/ADT/GraphTraits.h index 2c88c4271b48..68149d9e3bf5 100644 --- a/include/llvm/ADT/GraphTraits.h +++ b/include/llvm/ADT/GraphTraits.h @@ -52,7 +52,6 @@ struct GraphTraits { // Return total number of nodes in the graph // - // If anyone tries to use this class without having an appropriate // specialization, make an error. If you get this error, it's because you // need to include the appropriate specialization of GraphTraits<> for your diff --git a/include/llvm/ADT/ImmutableSet.h b/include/llvm/ADT/ImmutableSet.h index 0724a28306a0..9c9bcb81f76b 100644 --- a/include/llvm/ADT/ImmutableSet.h +++ b/include/llvm/ADT/ImmutableSet.h @@ -16,16 +16,16 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/FoldingSet.h" -#include "llvm/ADT/iterator.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/iterator.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/ErrorHandling.h" #include <cassert> -#include <functional> -#include <vector> #include <cstdint> +#include <functional> #include <iterator> #include <new> +#include <vector> namespace llvm { diff --git a/include/llvm/ADT/PointerUnion.h b/include/llvm/ADT/PointerUnion.h index 9eb15524c0f3..7ce70ebc8ce0 100644 --- a/include/llvm/ADT/PointerUnion.h +++ b/include/llvm/ADT/PointerUnion.h @@ -19,8 +19,8 @@ #include "llvm/ADT/PointerIntPair.h" #include "llvm/Support/PointerLikeTypeTraits.h" #include <cassert> -#include <cstdint> #include <cstddef> +#include <cstdint> namespace llvm { diff --git a/include/llvm/ADT/PostOrderIterator.h b/include/llvm/ADT/PostOrderIterator.h index a179d29956b1..dc8a9b6e78b2 100644 --- a/include/llvm/ADT/PostOrderIterator.h +++ b/include/llvm/ADT/PostOrderIterator.h @@ -17,9 +17,9 @@ #define LLVM_ADT_POSTORDERITERATOR_H #include "llvm/ADT/GraphTraits.h" -#include "llvm/ADT/iterator_range.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallPtrSet.h" +#include "llvm/ADT/iterator_range.h" #include <iterator> #include <set> #include <utility> diff --git a/include/llvm/ADT/PriorityWorklist.h b/include/llvm/ADT/PriorityWorklist.h index 35891e931801..aa531f3337d9 100644 --- a/include/llvm/ADT/PriorityWorklist.h +++ b/include/llvm/ADT/PriorityWorklist.h @@ -17,8 +17,8 @@ #define LLVM_ADT_PRIORITYWORKLIST_H #include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/SmallVector.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/Compiler.h" #include <algorithm> #include <cassert> diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h index 734a58f87da2..784a58dc002f 100644 --- a/include/llvm/ADT/SCCIterator.h +++ b/include/llvm/ADT/SCCIterator.h @@ -232,16 +232,6 @@ template <class T> scc_iterator<T> scc_end(const T &G) { return scc_iterator<T>::end(G); } -/// \brief Construct the begin iterator for a deduced graph type T's Inverse<T>. -template <class T> scc_iterator<Inverse<T>> scc_begin(const Inverse<T> &G) { - return scc_iterator<Inverse<T>>::begin(G); -} - -/// \brief Construct the end iterator for a deduced graph type T's Inverse<T>. -template <class T> scc_iterator<Inverse<T>> scc_end(const Inverse<T> &G) { - return scc_iterator<Inverse<T>>::end(G); -} - } // end namespace llvm #endif // LLVM_ADT_SCCITERATOR_H diff --git a/include/llvm/ADT/SmallPtrSet.h b/include/llvm/ADT/SmallPtrSet.h index a0b380b237da..a2ad74b1e04a 100644 --- a/include/llvm/ADT/SmallPtrSet.h +++ b/include/llvm/ADT/SmallPtrSet.h @@ -21,8 +21,8 @@ #include "llvm/Support/type_traits.h" #include <cassert> #include <cstddef> -#include <cstring> #include <cstdlib> +#include <cstring> #include <initializer_list> #include <iterator> #include <utility> @@ -31,8 +31,12 @@ namespace llvm { #if LLVM_ENABLE_ABI_BREAKING_CHECKS template <class T = void> struct ReverseIterate { static bool value; }; +#if LLVM_ENABLE_REVERSE_ITERATION +template <class T> bool ReverseIterate<T>::value = true; +#else template <class T> bool ReverseIterate<T>::value = false; #endif +#endif /// SmallPtrSetImplBase - This is the common code shared among all the /// SmallPtrSet<>'s, which is almost everything. SmallPtrSet has two modes, one diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h index 35c255002001..bf2a62f43aff 100644 --- a/include/llvm/ADT/SmallVector.h +++ b/include/llvm/ADT/SmallVector.h @@ -388,7 +388,10 @@ public: void swap(SmallVectorImpl &RHS); /// Add the specified range to the end of the SmallVector. - template<typename in_iter> + template <typename in_iter, + typename = typename std::enable_if<std::is_convertible< + typename std::iterator_traits<in_iter>::iterator_category, + std::input_iterator_tag>::value>::type> void append(in_iter in_start, in_iter in_end) { size_type NumInputs = std::distance(in_start, in_end); // Grow allocated space if needed. @@ -426,7 +429,11 @@ public: std::uninitialized_fill(this->begin(), this->end(), Elt); } - template <typename in_iter> void assign(in_iter in_start, in_iter in_end) { + template <typename in_iter, + typename = typename std::enable_if<std::is_convertible< + typename std::iterator_traits<in_iter>::iterator_category, + std::input_iterator_tag>::value>::type> + void assign(in_iter in_start, in_iter in_end) { clear(); append(in_start, in_end); } @@ -579,7 +586,10 @@ public: return I; } - template<typename ItTy> + template <typename ItTy, + typename = typename std::enable_if<std::is_convertible< + typename std::iterator_traits<ItTy>::iterator_category, + std::input_iterator_tag>::value>::type> iterator insert(iterator I, ItTy From, ItTy To) { // Convert iterator to elt# to avoid invalidating iterator when we reserve() size_t InsertElt = I - this->begin(); @@ -860,7 +870,10 @@ public: this->assign(Size, Value); } - template<typename ItTy> + template <typename ItTy, + typename = typename std::enable_if<std::is_convertible< + typename std::iterator_traits<ItTy>::iterator_category, + std::input_iterator_tag>::value>::type> SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(N) { this->append(S, E); } diff --git a/include/llvm/ADT/SparseMultiSet.h b/include/llvm/ADT/SparseMultiSet.h index b3a413aa3aa5..c91e0d70f65a 100644 --- a/include/llvm/ADT/SparseMultiSet.h +++ b/include/llvm/ADT/SparseMultiSet.h @@ -21,9 +21,9 @@ #ifndef LLVM_ADT_SPARSEMULTISET_H #define LLVM_ADT_SPARSEMULTISET_H +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/SparseSet.h" -#include "llvm/ADT/STLExtras.h" #include <cassert> #include <cstdint> #include <cstdlib> diff --git a/include/llvm/ADT/StringExtras.h b/include/llvm/ADT/StringExtras.h index e22a3f688c40..bbea8619a673 100644 --- a/include/llvm/ADT/StringExtras.h +++ b/include/llvm/ADT/StringExtras.h @@ -15,11 +15,11 @@ #define LLVM_ADT_STRINGEXTRAS_H #include "llvm/ADT/StringRef.h" -#include <iterator> #include <cassert> #include <cstddef> #include <cstdint> #include <cstring> +#include <iterator> #include <string> #include <utility> diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h index 4b25f56432df..f6c93a858db1 100644 --- a/include/llvm/ADT/StringRef.h +++ b/include/llvm/ADT/StringRef.h @@ -18,8 +18,8 @@ #include <cstddef> #include <cstring> #include <limits> -#include <type_traits> #include <string> +#include <type_traits> #include <utility> namespace llvm { diff --git a/include/llvm/ADT/iterator_range.h b/include/llvm/ADT/iterator_range.h index 3dd679bd9b79..3cbf6198eb60 100644 --- a/include/llvm/ADT/iterator_range.h +++ b/include/llvm/ADT/iterator_range.h @@ -19,8 +19,8 @@ #ifndef LLVM_ADT_ITERATOR_RANGE_H #define LLVM_ADT_ITERATOR_RANGE_H -#include <utility> #include <iterator> +#include <utility> namespace llvm { |