[PATCH] D20636: PR26055: Speed up LiveDebugValues::transferDebugValue()

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Wed May 25 11:42:40 PDT 2016

aprantl created this revision.
aprantl added reviewers: dberlin, friss.
aprantl added subscribers: zaks.anna, llvm-commits, wolfgangp.
aprantl set the repository for this revision to rL LLVM.

This patch builds upon http://reviews.llvm.org/D20178 and speeds up LiveDebugValues::transferDebugValue() by adding an index that maps each DebugVariable to its open VarLoc.

The transferDebugValue() function needs to close all open ranges for a given DebugVariable. Iterating over the set bits of OpenRanges is prohibitively slow in practice. I experimented with using the sorted map of VarLocs in the UniqueVector to iterate only over the range of VarLocs with a given DebugVariable, but the binary search turned out to be even more expensive than just iterating over the set bits in OpenRanges.
Instead, this patch exploits the fact that there can only be one open location for each DebugVariable and redundantly stores this location in a DenseMap. 

bench1: The ASAN -O3 example I've been testing with.
bench2: The bitcode from PR26055 at -O0.

Baseline (D20178):
bench1: user	2m43.600s
bench2: user	1m0.948s

This patch:
bench1: user	1m6.725s
bench2: user	0m21.452s




-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20636.58466.patch
Type: text/x-patch
Size: 5758 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160525/2e5f7fe8/attachment.bin>

More information about the llvm-commits mailing list