Improve performance of calculateDbgValueHistory.
authorAdrian Prantl <aprantl@apple.com>
Wed, 6 Aug 2014 18:41:24 +0000 (18:41 +0000)
committerAdrian Prantl <aprantl@apple.com>
Wed, 6 Aug 2014 18:41:24 +0000 (18:41 +0000)
commit6cdc37478647dd9534427c3243502ae407a649b5
tree4ef77b4d890631d38116ee5769c05f5974aaeeb6
parent6e62bbdafc5f0b173bf873b846da101bbb44a735
Improve performance of calculateDbgValueHistory.

In r210492 the logic of calculateDbgValueHistory was changed to end
register variable live ranges at the end of MBB conditionally on
the fact that the register was or not clobbered by the function body.

This requires an initial scan of all the operands of the function
to collect all clobbered registers. In a second pass over all
instructions, we compare this set with the set of clobbered
registers for the current MachineInstruction. This modification
incurred a compilation time regression on some benchmarks: the
debug info emission phase takes ~10% more time.

While a small performance hit is unavoidable due to the initial
scan requirement, we can improve the situation by avoiding to
create too many temporary sets and just use lambdas to work directly
on the result of the initial scan.

Fixes <rdar://problem/17884104>

Patch by Frederic Riss!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214987 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp