[llvm] 3f26f1a - [ADT] Reduce boilerplate in DenseSet (NFC) (#158456)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 14 11:03:00 PDT 2025
Author: Kazu Hirata
Date: 2025-09-14T11:02:56-07:00
New Revision: 3f26f1aed07f9671891b64594d9a7bd7c3df1f7c
URL: https://github.com/llvm/llvm-project/commit/3f26f1aed07f9671891b64594d9a7bd7c3df1f7c
DIFF: https://github.com/llvm/llvm-project/commit/3f26f1aed07f9671891b64594d9a7bd7c3df1f7c.diff
LOG: [ADT] Reduce boilerplate in DenseSet (NFC) (#158456)
The class definitions of DenseSet and SmallDenseSet contain a lot of
boilerplate code, repeating the lengthy base class name twice in each
definition.
This patch simplifies the two definitions by making them type aliases.
Added:
Modified:
llvm/include/llvm/ADT/DenseSet.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/ADT/DenseSet.h b/llvm/include/llvm/ADT/DenseSet.h
index 281d4d1c78cc0..60ad9b2eb7762 100644
--- a/llvm/include/llvm/ADT/DenseSet.h
+++ b/llvm/include/llvm/ADT/DenseSet.h
@@ -250,20 +250,24 @@ bool operator!=(const DenseSetImpl<ValueT, MapTy, ValueInfoT> &LHS,
return !(LHS == RHS);
}
+template <typename ValueT, typename ValueInfoT>
+using DenseSet = DenseSetImpl<
+ ValueT, DenseMap<ValueT, DenseSetEmpty, ValueInfoT, DenseSetPair<ValueT>>,
+ ValueInfoT>;
+
+template <typename ValueT, unsigned InlineBuckets, typename ValueInfoT>
+using SmallDenseSet =
+ DenseSetImpl<ValueT,
+ SmallDenseMap<ValueT, DenseSetEmpty, InlineBuckets, ValueInfoT,
+ DenseSetPair<ValueT>>,
+ ValueInfoT>;
+
} // end namespace detail
/// 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>;
+class DenseSet : public detail::DenseSet<ValueT, ValueInfoT> {
+ using BaseT = detail::DenseSet<ValueT, ValueInfoT>;
public:
using BaseT::BaseT;
@@ -274,16 +278,8 @@ class DenseSet : public detail::DenseSetImpl<
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 detail::SmallDenseSet<ValueT, InlineBuckets, ValueInfoT> {
+ using BaseT = detail::SmallDenseSet<ValueT, InlineBuckets, ValueInfoT>;
public:
using BaseT::BaseT;
More information about the llvm-commits
mailing list