<div dir="ltr">This just makes SmallDenseSet a thing, with no actual implementation changes, just template parameter changes.<div><div><div><br></div></div><div>My C++ fu is weak on the "how do i make this happen front", so feel free to point out a better way to do this.</div><div><br></div><div>SmallDenseSet is being used in a soon-to-be submitted out of tree patch.</div><div><br></div><div>(changed parts were reformatted with clang-format)</div><div><div>---</div><div> include/llvm/ADT/DenseSet.h | 16 +++++++++++++---</div><div> 1 file changed, 13 insertions(+), 3 deletions(-)</div><div><br></div><div>diff --git a/include/llvm/ADT/DenseSet.h b/include/llvm/ADT/DenseSet.h</div><div>index d340240..aee825c8 100644</div><div>--- a/include/llvm/ADT/DenseSet.h</div><div>+++ b/include/llvm/ADT/DenseSet.h</div><div>@@ -35,10 +35,12 @@ public:</div><div> }</div><div><br></div><div> /// DenseSet - This implements a dense probed hash-table based set.</div><div>-template<typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT> ></div><div>+template <typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT>,</div><div>+          typename DenseMapT =</div><div>+              DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,</div><div>+                       detail::DenseSetPair<ValueT>>></div><div> class DenseSet {</div><div>-  typedef DenseMap<ValueT, detail::DenseSetEmpty, ValueInfoT,</div><div>-                   detail::DenseSetPair<ValueT>> MapTy;</div><div>+  typedef DenseMapT MapTy;</div><div>   static_assert(sizeof(typename MapTy::value_type) == sizeof(ValueT),</div><div>                 "DenseMap buckets unexpectedly large!");</div><div>   MapTy TheMap;</div><div>@@ -157,6 +159,14 @@ public:</div><div>   }</div><div> };</div><div><br></div><div>+/// SmallDenseSet - This is the SmallDenseMap version of DenseSet</div><div>+template <typename ValueT, typename ValueInfoT = DenseMapInfo<ValueT>,</div><div>+          unsigned InlineBuckets = 4></div><div>+using SmallDenseSet =</div><div>+    DenseSet<ValueT, ValueInfoT,</div><div>+             SmallDenseMap<ValueT, detail::DenseSetEmpty, InlineBuckets,</div><div>+                           ValueInfoT, detail::DenseSetPair<ValueT>>>;</div><div>+</div><div> } // end namespace llvm</div><div><br></div><div> #endif</div><div>--</div><div>2.3.3</div></div><div><br></div></div></div>