aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/LiveDebugValues.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2020-02-18 05:41:55 -0800
committerVedant Kumar <vsk@apple.com>2020-02-27 12:39:46 -0800
commitb0142cd9867d720375008969fd9555cc1a17c098 (patch)
tree99d7fdd0488bce239f6828304b32ae7ca7ec1df6 /llvm/lib/CodeGen/LiveDebugValues.cpp
parent1d8fad44d301d04e2327a164b702a3fec87ee866 (diff)
downloadllvm-b0142cd9867d720375008969fd9555cc1a17c098.zip
llvm-b0142cd9867d720375008969fd9555cc1a17c098.tar.gz
llvm-b0142cd9867d720375008969fd9555cc1a17c098.tar.bz2
[ADT] Add CoalescingBitVector, implemented using IntervalMap [1/3]
Add CoalescingBitVector to ADT. This is part 1 of a 3-part series to address a compile-time explosion issue in LiveDebugValues. --- CoalescingBitVector is a bitvector that, under the hood, relies on an IntervalMap to coalesce elements into intervals. CoalescingBitVector efficiently represents sets which predominantly contain contiguous ranges (e.g. the VarLocSets in LiveDebugValues, which are very long sequences that look like {1, 2, 3, ...}). OTOH, CoalescingBitVector isn't good at representing sets with lots of gaps between elements. The first N coalesced intervals of set bits are stored in-place (in the initial heap allocation). Compared to SparseBitVector, CoalescingBitVector offers more predictable performance for non-sequential find() operations. This provides a crucial speedup in LiveDebugValues. Differential Revision: https://reviews.llvm.org/D74984
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugValues.cpp')
0 files changed, 0 insertions, 0 deletions