diff options
Diffstat (limited to 'llvm/tools/llvm-cov')
| -rw-r--r-- | llvm/tools/llvm-cov/CodeCoverage.cpp | 30 | ||||
| -rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp | 10 | ||||
| -rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewText.cpp | 7 | 
3 files changed, 31 insertions, 16 deletions
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp index 6edca9f6071..9eacbcad5ce 100644 --- a/llvm/tools/llvm-cov/CodeCoverage.cpp +++ b/llvm/tools/llvm-cov/CodeCoverage.cpp @@ -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); - -    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)); +    std::unique_ptr<SourceCoverageView> SubView{nullptr}; + +    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;  } diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp index 0f176551550..31d6fd3048b 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -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;  } diff --git a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp index 51c6463db30..f5201d9c808 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewText.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewText.cpp @@ -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) {  | 

