forked from OSchip/llvm-project
4d7b194543
The current organization of FileInfo and its referenced utility functions of (GCOVFile, GCOVFunction, GCOVBlock) is messy. Some members of FileInfo are just copied from GCOVFile. FileInfo::print (.gcov output and --intermediate output) is interleaved with branch statistics and computation of line execution counts. --intermediate has to do redundant .gcov output to gather branch statistics. This patch deletes lots of code and introduces a clearer work flow: ``` fn collectFunction for each block b for each line lineNum let line be LineInfo of the file on lineNum line.exists = 1 increment function's lines & linesExec if necessary increment line.count line.blocks.push_back(&b) fn collectSourceLine compute cycle counts count = incoming_counts + cycle_counts if line.exists ++summary->lines if line.count ++summary->linesExec fn collectSource for each line call collectSourceLine fn main for each function call collectFunction print function summary for each source file call collectSource print file summary annotate the source file with line execution counts if -i print intermediate file ``` The output order of functions and files now follows the original order in .gcno files. |
||
---|---|---|
.. | ||
Coverage | ||
CMakeLists.txt | ||
GCOV.cpp | ||
InstrProf.cpp | ||
InstrProfReader.cpp | ||
InstrProfWriter.cpp | ||
LLVMBuild.txt | ||
ProfileSummaryBuilder.cpp | ||
SampleProf.cpp | ||
SampleProfReader.cpp | ||
SampleProfWriter.cpp |