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)
commit364d13170a62e006934cb5761c9bb90378304775
treef6c4788ad68b97a606373cfcba4453bc42ebd8fb
parente2d637597c58d566fcc4999e97b60f9010ec2319
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!

llvm-svn: 214987
llvm/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp