mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[llvm-cov] Hide instantiation views for unexecuted functions
Copying in the full text of the function doesn't help at all when we already know that it's never executed. Just say that it's unexecuted -- the relevant source text has already been printed. llvm-svn: 281589
This commit is contained in:
parent
0a5dff338d
commit
7176440043
16
test/tools/llvm-cov/Inputs/hideUnexecutedSubviews.proftext
Normal file
16
test/tools/llvm-cov/Inputs/hideUnexecutedSubviews.proftext
Normal file
@ -0,0 +1,16 @@
|
||||
_Z4funcIbEiT_
|
||||
10
|
||||
2
|
||||
0
|
||||
0
|
||||
|
||||
_Z4funcIiEiT_
|
||||
10
|
||||
2
|
||||
0
|
||||
0
|
||||
|
||||
main
|
||||
0
|
||||
1
|
||||
0
|
10
test/tools/llvm-cov/hideUnexecutedSubviews.test
Normal file
10
test/tools/llvm-cov/hideUnexecutedSubviews.test
Normal file
@ -0,0 +1,10 @@
|
||||
RUN: llvm-profdata merge %S/Inputs/hideUnexecutedSubviews.proftext -o %t.profdata
|
||||
|
||||
RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -filename-equivalence %S/showTemplateInstantiations.cpp | FileCheck %s
|
||||
|
||||
RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %t.profdata -format html -o %t.html.dir -filename-equivalence %S/showTemplateInstantiations.cpp
|
||||
RUN: FileCheck %s -input-file %t.html.dir/coverage/tmp/showTemplateInstantiations.cpp.html
|
||||
|
||||
CHECK: Unexecuted instantiation: _Z4funcIbEiT_
|
||||
CHECK: Unexecuted instantiation: _Z4funcIiEiT_
|
||||
CHECK-NOT: Unexecuted instantiation
|
@ -234,21 +234,23 @@ CodeCoverageTool::createSourceFileView(StringRef SourceFile,
|
||||
attachExpansionSubViews(*View, Expansions, Coverage);
|
||||
|
||||
for (const auto *Function : Coverage.getInstantiations(SourceFile)) {
|
||||
auto SubViewCoverage = Coverage.getCoverageForFunction(*Function);
|
||||
auto SubViewExpansions = SubViewCoverage.getExpansions();
|
||||
auto SubView = SourceCoverageView::create(
|
||||
getSymbolForHumans(Function->Name), SourceBuffer.get(), ViewOpts,
|
||||
std::move(SubViewCoverage));
|
||||
attachExpansionSubViews(*SubView, SubViewExpansions, Coverage);
|
||||
std::unique_ptr<SourceCoverageView> SubView{nullptr};
|
||||
|
||||
if (SubView) {
|
||||
unsigned FileID = Function->CountedRegions.front().FileID;
|
||||
unsigned Line = 0;
|
||||
for (const auto &CR : Function->CountedRegions)
|
||||
if (CR.FileID == FileID)
|
||||
Line = std::max(CR.LineEnd, Line);
|
||||
View->addInstantiation(Function->Name, Line, std::move(SubView));
|
||||
if (Function->ExecutionCount > 0) {
|
||||
auto SubViewCoverage = Coverage.getCoverageForFunction(*Function);
|
||||
auto SubViewExpansions = SubViewCoverage.getExpansions();
|
||||
SubView = SourceCoverageView::create(
|
||||
getSymbolForHumans(Function->Name), SourceBuffer.get(), ViewOpts,
|
||||
std::move(SubViewCoverage));
|
||||
attachExpansionSubViews(*SubView, SubViewExpansions, Coverage);
|
||||
}
|
||||
|
||||
unsigned FileID = Function->CountedRegions.front().FileID;
|
||||
unsigned Line = 0;
|
||||
for (const auto &CR : Function->CountedRegions)
|
||||
if (CR.FileID == FileID)
|
||||
Line = std::max(CR.LineEnd, Line);
|
||||
View->addInstantiation(Function->Name, Line, std::move(SubView));
|
||||
}
|
||||
return View;
|
||||
}
|
||||
|
@ -584,7 +584,15 @@ void SourceCoverageViewHTML::renderInstantiationView(raw_ostream &OS,
|
||||
InstantiationView &ISV,
|
||||
unsigned ViewDepth) {
|
||||
OS << BeginExpansionDiv;
|
||||
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true, ViewDepth);
|
||||
if (!ISV.View)
|
||||
OS << BeginSourceNameDiv
|
||||
<< tag("pre",
|
||||
escape("Unexecuted instantiation: " + ISV.FunctionName.str(),
|
||||
getOptions()))
|
||||
<< EndSourceNameDiv;
|
||||
else
|
||||
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true,
|
||||
ViewDepth);
|
||||
OS << EndExpansionDiv;
|
||||
}
|
||||
|
||||
|
@ -215,7 +215,12 @@ void SourceCoverageViewText::renderInstantiationView(raw_ostream &OS,
|
||||
unsigned ViewDepth) {
|
||||
renderLinePrefix(OS, ViewDepth);
|
||||
OS << ' ';
|
||||
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true, ViewDepth);
|
||||
if (!ISV.View)
|
||||
getOptions().colored_ostream(OS, raw_ostream::RED)
|
||||
<< "Unexecuted instantiation: " << ISV.FunctionName << "\n";
|
||||
else
|
||||
ISV.View->print(OS, /*WholeFile=*/false, /*ShowSourceName=*/true,
|
||||
ViewDepth);
|
||||
}
|
||||
|
||||
void SourceCoverageViewText::renderTitle(raw_ostream &OS, StringRef Title) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user