[GCOV] Function counters are wrong when on one line

Summary:
After commit https://reviews.llvm.org/rL344228, the function definitions have a counter but when on one line the counter is wrong (e.g. void foo() { })
I added a test in: https://reviews.llvm.org/D53601

Reviewers: marco-c

Reviewed By: marco-c

Subscribers: llvm-commits, sylvestre.ledru

Differential Revision: https://reviews.llvm.org/D53600

llvm-svn: 345624
This commit is contained in:
Calixte Denizet 2018-10-30 18:41:31 +00:00
parent eedd2ccd02
commit 38d50545fe
1 changed files with 3 additions and 4 deletions

View File

@ -572,9 +572,8 @@ void GCOVProfiler::emitProfileNotes() {
// Add the function line number to the lines of the entry block
// to have a counter for the function definition.
Func.getBlock(&EntryBlock)
.getFile(SP->getFilename())
.addLine(SP->getLine());
uint32_t Line = SP->getLine();
Func.getBlock(&EntryBlock).getFile(SP->getFilename()).addLine(Line);
for (auto &BB : F) {
GCOVBlock &Block = Func.getBlock(&BB);
@ -587,7 +586,6 @@ void GCOVProfiler::emitProfileNotes() {
Block.addEdge(Func.getReturnBlock());
}
uint32_t Line = 0;
for (auto &I : BB) {
// Debug intrinsic locations correspond to the location of the
// declaration, not necessarily any statements or expressions.
@ -609,6 +607,7 @@ void GCOVProfiler::emitProfileNotes() {
GCOVLines &Lines = Block.getFile(SP->getFilename());
Lines.addLine(Loc.getLine());
}
Line = 0;
}
EdgeDestinations += Func.getEdgeDestinations();
}