//===- llvm/ADT/CoalescingBitVector.h - A coalescing bitvector --*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// A bitvector that uses an IntervalMap to coalesce adjacent elements /// into intervals. /// //===----------------------------------------------------------------------===// #ifndef LLVM_ADT_COALESCINGBITVECTOR_H #define LLVM_ADT_COALESCINGBITVECTOR_H #include "llvm/ADT/IntervalMap.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/iterator_range.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" #include <initializer_list> namespace llvm { /// A bitvector that, under the hood, relies on an IntervalMap to coalesce /// elements into intervals. Good for representing sets which predominantly /// contain contiguous ranges. Bad for representing sets with lots of gaps /// between elements. /// /// Compared to SparseBitVector, CoalescingBitVector offers more predictable /// performance for non-sequential find() operations. /// /// \tparam IndexT - The type of the index into the bitvector. template <typename IndexT> class CoalescingBitVector { … }; } // namespace llvm #endif // LLVM_ADT_COALESCINGBITVECTOR_H