Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 12 additions & 30 deletions llvm/include/llvm/ADT/DenseSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ class DenseSetImpl {
using value_type = ValueT;
using size_type = unsigned;

explicit DenseSetImpl(unsigned InitialReserve = 0) : TheMap(InitialReserve) {}
DenseSetImpl() = default;
explicit DenseSetImpl(unsigned InitialReserve) : TheMap(InitialReserve) {}

template <typename InputIt>
DenseSetImpl(const InputIt &I, const InputIt &E)
Expand Down Expand Up @@ -254,40 +255,21 @@ bool operator!=(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS,

/// Implements a dense probed hash-table based set.
template <typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT>>
class DenseSet : public detail::DenseSetImpl<
ValueT,
DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,
detail::DenseSetPair<ValueT>>,
ValueInfoT> {
using BaseT =
detail::DenseSetImpl<ValueT,
DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,
detail::DenseSetPair<ValueT>>,
ValueInfoT>;

public:
using BaseT::BaseT;
};
using DenseSet =
detail::DenseSetImpl<ValueT,
DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,
detail::DenseSetPair<ValueT>>,
ValueInfoT>;

/// Implements a dense probed hash-table based set with some number of buckets
/// stored inline.
template <typename ValueT, unsigned InlineBuckets = 4,
typename ValueInfoT = DenseMapInfo<ValueT>>
class SmallDenseSet
: public detail::DenseSetImpl<
ValueT,
SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets,
ValueInfoT, detail::DenseSetPair<ValueT>>,
ValueInfoT> {
using BaseT = detail::DenseSetImpl<
ValueT,
SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets, ValueInfoT,
detail::DenseSetPair<ValueT>>,
ValueInfoT>;

public:
using BaseT::BaseT;
};
using SmallDenseSet = detail::DenseSetImpl<
ValueT,
SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets, ValueInfoT,
detail::DenseSetPair<ValueT>>,
ValueInfoT>;

} // end namespace llvm

Expand Down
15 changes: 12 additions & 3 deletions mlir/include/mlir/Support/LLVM.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,13 @@ template <typename KeyT, typename ValueT, typename KeyInfoT, typename BucketT>
class DenseMap;
template <typename T, typename Enable>
struct DenseMapInfo;
template <typename ValueT, typename ValueInfoT>
class DenseSet;
namespace detail {
template <typename ValueT, typename MapTy, typename ValueInfoT>
class DenseSetImpl;
struct DenseSetEmpty;
template <typename KeyT>
class DenseSetPair;
} // namespace detail
class MallocAllocator;
template <typename T>
class MutableArrayRef;
Expand Down Expand Up @@ -125,7 +130,11 @@ template <typename KeyT, typename ValueT,
typename BucketT = llvm::detail::DenseMapPair<KeyT, ValueT>>
using DenseMap = llvm::DenseMap<KeyT, ValueT, KeyInfoT, BucketT>;
template <typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT>>
using DenseSet = llvm::DenseSet<ValueT, ValueInfoT>;
using DenseSet = llvm::detail::DenseSetImpl<
ValueT,
llvm::DenseMap<ValueT, llvm::detail::DenseSetEmpty, ValueInfoT,
llvm::detail::DenseSetPair<ValueT>>,
ValueInfoT>;
template <typename T, typename Vector = llvm::SmallVector<T, 0>,
typename Set = DenseSet<T>, unsigned N = 0>
using SetVector = llvm::SetVector<T, Vector, Set, N>;
Expand Down
Loading