[all-commits] [llvm/llvm-project] 4716eb: [ADT] CoalescingBitVector: Avoid initial heap allo...

Vedant Kumar via All-commits all-commits at lists.llvm.org
Fri Mar 20 12:18:32 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 4716ebb823e4a3953d7ea803db1949ff699b96c8
      https://github.com/llvm/llvm-project/commit/4716ebb823e4a3953d7ea803db1949ff699b96c8
  Author: Vedant Kumar <vsk at apple.com>
  Date:   2020-03-20 (Fri, 20 Mar 2020)

  Changed paths:
    M llvm/include/llvm/ADT/CoalescingBitVector.h
    M llvm/lib/CodeGen/LiveDebugValues.cpp
    M llvm/unittests/ADT/CoalescingBitVectorTest.cpp

  Log Message:
  -----------
  [ADT] CoalescingBitVector: Avoid initial heap allocation, NFC

Avoid making a heap allocation when constructing a CoalescingBitVector.

This reduces time spent in LiveDebugValues when compiling sqlite3 by
700ms (0.5% of the total User Time).

rdar://60046261

Differential Revision: https://reviews.llvm.org/D76465


  Commit: a3fd1a1c744f4fa0bdefc77f5ec00141fb1f6d2a
      https://github.com/llvm/llvm-project/commit/a3fd1a1c744f4fa0bdefc77f5ec00141fb1f6d2a
  Author: Vedant Kumar <vsk at apple.com>
  Date:   2020-03-20 (Fri, 20 Mar 2020)

  Changed paths:
    M llvm/include/llvm/ADT/CoalescingBitVector.h
    M llvm/unittests/ADT/CoalescingBitVectorTest.cpp

  Log Message:
  -----------
  [ADT] CoalescingBitVector: Add advanceToLowerBound iterator operation

advanceToLowerBound moves an iterator to the first bit set at, or after,
the given index. This can be faster than doing IntervalMap::find.

rdar://60046261

Differential Revision: https://reviews.llvm.org/D76466


  Commit: a24594335513f1ecf07a785a6633f9d3956c0ad2
      https://github.com/llvm/llvm-project/commit/a24594335513f1ecf07a785a6633f9d3956c0ad2
  Author: Vedant Kumar <vsk at apple.com>
  Date:   2020-03-20 (Fri, 20 Mar 2020)

  Changed paths:
    M llvm/lib/CodeGen/LiveDebugValues.cpp

  Log Message:
  -----------
  [LiveDebugValues] Speed up collectIDsForRegs, NFC

Use the advanceToLowerBound operation available on CoalescingBitVector
iterators to speed up collection of variables which reside within some
set of registers.

The speedup comes from avoiding repeated top-down traversals in
IntervalMap::find. The linear scan forward from one register interval to
the next is unlikely to be as expensive as a full IntervalMap search
starting from the root.

This reduces time spent in LiveDebugValues when compiling sqlite3 by
200ms (about 0.1% - 0.2% of the total User Time).

Depends on D76466.

rdar://60046261

Differential Revision: https://reviews.llvm.org/D76467


Compare: https://github.com/llvm/llvm-project/compare/25294708f5ee...a24594335513


More information about the All-commits mailing list