llvm-6502/include/llvm/ProfileData
Justin Bogner 1476756523 InstrProf: Don't keep a large sparse list around just to zero it
The Terms vector here represented a polynomial of of all possible
counters, and is used to simplify expressions when generating coverage
mapping. There are a few problems with this:

1. Keeping the vector as a member is wasteful, since we clear it every
   time we use it.
2. Most expressions refer to a subset of the counters, so we end up
   iterating over a large number of zeros doing nothing a lot of the
   time.

This updates the user of the vector to store the terms locally, and
uses a sort and combine approach so that we only operate on counters
that are actually used in a given expression. For small cases this
makes very little difference, but in cases with a very large number of
counted regions this is a significant performance fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218879 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-02 16:04:03 +00:00
..
CoverageMapping.h InstrProf: Don't keep a large sparse list around just to zero it 2014-10-02 16:04:03 +00:00
CoverageMappingReader.h Coverage Mapping: add function's hash to coverage function records. 2014-08-21 19:23:25 +00:00
CoverageMappingWriter.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
InstrProf.h Don't use 'using std::error_code' in include/llvm. 2014-06-12 21:46:39 +00:00
InstrProfReader.h LineIterator: Provide a variant that keeps blank lines 2014-09-17 15:43:01 +00:00
InstrProfWriter.h Canonicalize header guards into a common format. 2014-08-13 16:26:38 +00:00
SampleProfReader.h Re-factor sample profile reader into lib/ProfileData. 2014-09-09 12:40:50 +00:00