Commit Graph

14 Commits

Author SHA1 Message Date
Justin Bogner 8e015ff43b InstrProf: Simplify/reduce state in CoverageMapping (NFC)
This state object makes things harder to reason about and isn't really
useful, since we can just emit the mappings before the state changes
rather than holding on to it.

llvm-svn: 224476
2014-12-17 23:55:04 +00:00
Justin Bogner 4cb85f36ca InstrProf: Remove an unnecessary helper function (NFC)
VisitSubStmtRBraceState is really just Visit, as long as
VisitCompoundStatement handles braces correctly.

llvm-svn: 221659
2014-11-11 02:47:05 +00:00
Justin Bogner e5ee6c58d7 Reapply "InstrProf: Update for the LLVM API change in r218879"
Reapplying now that r218887 is in.

This reverts commit r218882, reapplying r218880.

llvm-svn: 218888
2014-10-02 16:44:01 +00:00
Justin Bogner 1c4fb4600d Revert "InstrProf: Update for the LLVM API change in r218879"
r218879 has been reverted for now, this needs to go to match.

This reverts commit r218880.

llvm-svn: 218882
2014-10-02 16:15:37 +00:00
Justin Bogner 94eabf58bd InstrProf: Update for the LLVM API change in r218879
llvm-svn: 218880
2014-10-02 16:04:18 +00:00
Justin Bogner f59329b083 InstrProf: Avoid repeated linear searches in a hot path
When generating coverage regions, we were doing a linear search
through the existing regions in order to try to merge related ones.
Most of the time this would find what it was looking for in a small
number of steps and it wasn't a big deal, but in cases with many
regions and few mergeable ones this leads to an absurd compile time
regression.

This changes the coverage mapping logic to do a single sort and then
merge as we go, which is a bit simpler and about 100 times faster.
I've also added FIXMEs on a couple of behaviours that seem a little
suspect, while keeping them behaving as they were - I'll look into
these soon.

The test changes here are mostly tedious reorganization, because the
ordering of regions we output has become slightly (but not completely)
more consistent from the almost completely arbitrary ordering we got
before.

llvm-svn: 218738
2014-10-01 03:33:52 +00:00
Justin Bogner 09c7179bad InstrProf: Hide SourceMappingRegion's internals (NFC)
This struct has some members that are accessed directly and others
that need accessors, but it's all just public. This is confusing, so
I've changed it to a class and made more members private.

llvm-svn: 218737
2014-10-01 03:33:49 +00:00
Justin Bogner 916cca728f InstrProf: Remove an unused member (NFC)
llvm-svn: 218697
2014-09-30 20:21:50 +00:00
Craig Topper 5fc8fc2d31 Simplify creation of a bunch of ArrayRefs by using None, makeArrayRef or just letting them be implicitly created.
llvm-svn: 216528
2014-08-27 06:28:36 +00:00
Alex Lorenz 1d45c5bc26 Coverage Mapping: store function's hash in coverage function records.
The profile data format was recently updated and the new indexing api
requires the code coverage tool to know the function's hash as well
as the function's name to get the execution counts for a function.

Differential Revision: http://reviews.llvm.org/D4995

llvm-svn: 216208
2014-08-21 19:25:27 +00:00
Alex Lorenz fdd769e847 Coverage mapping: fix mapping for objective-c for statement
llvm-svn: 216082
2014-08-20 17:11:53 +00:00
Alex Lorenz 01a0d062aa Coverage mapping: fix mapping for objective-c message expression
llvm-svn: 216081
2014-08-20 17:10:56 +00:00
Alex Lorenz f2cf38e020 Add a cc1 "dump-coverage-mapping" for testing coverage mapping.
Differential Revision: http://reviews.llvm.org/D4799

llvm-svn: 215258
2014-08-08 23:41:24 +00:00
Alex Lorenz ee02499a8f Add coverage mapping generation.
This patch adds the '-fcoverage-mapping' option which
allows clang to generate the coverage mapping information
that can be used to provide code coverage analysis using
the execution counts obtained from the instrumentation 
based profiling (-fprofile-instr-generate).

llvm-svn: 214752
2014-08-04 18:41:51 +00:00