diff options
Diffstat (limited to 'llvm/tools/llvm-cov/SourceCoverageView.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageView.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/llvm/tools/llvm-cov/SourceCoverageView.cpp b/llvm/tools/llvm-cov/SourceCoverageView.cpp index cd7395a..aca58a0 100644 --- a/llvm/tools/llvm-cov/SourceCoverageView.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageView.cpp @@ -132,7 +132,8 @@ bool SourceCoverageView::shouldRenderRegionMarkers( } bool SourceCoverageView::hasSubViews() const { - return !ExpansionSubViews.empty() || !InstantiationSubViews.empty(); + return !ExpansionSubViews.empty() || !InstantiationSubViews.empty() || + !BranchSubViews.empty(); } std::unique_ptr<SourceCoverageView> @@ -167,6 +168,12 @@ void SourceCoverageView::addExpansion( ExpansionSubViews.emplace_back(Region, std::move(View)); } +void SourceCoverageView::addBranch(unsigned Line, + ArrayRef<CountedRegion> Regions, + std::unique_ptr<SourceCoverageView> View) { + BranchSubViews.emplace_back(Line, Regions, std::move(View)); +} + void SourceCoverageView::addInstantiation( StringRef FunctionName, unsigned Line, std::unique_ptr<SourceCoverageView> View) { @@ -187,14 +194,17 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile, renderTableHeader(OS, (ViewDepth > 0) ? 0 : getFirstUncoveredLineNo(), ViewDepth); - // We need the expansions and instantiations sorted so we can go through them - // while we iterate lines. + // We need the expansions, instantiations, and branches sorted so we can go + // through them while we iterate lines. llvm::stable_sort(ExpansionSubViews); llvm::stable_sort(InstantiationSubViews); + llvm::stable_sort(BranchSubViews); auto NextESV = ExpansionSubViews.begin(); auto EndESV = ExpansionSubViews.end(); auto NextISV = InstantiationSubViews.begin(); auto EndISV = InstantiationSubViews.end(); + auto NextBRV = BranchSubViews.begin(); + auto EndBRV = BranchSubViews.end(); // Get the coverage information for the file. auto StartSegment = CoverageInfo.begin(); @@ -234,7 +244,7 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile, if (shouldRenderRegionMarkers(*LCI)) renderRegionMarkers(OS, *LCI, ViewDepth); - // Show the expansions and instantiations for this line. + // Show the expansions, instantiations, and branches for this line. bool RenderedSubView = false; for (; NextESV != EndESV && NextESV->getLine() == LI.line_number(); ++NextESV) { @@ -257,6 +267,11 @@ void SourceCoverageView::print(raw_ostream &OS, bool WholeFile, renderInstantiationView(OS, *NextISV, ViewDepth + 1); RenderedSubView = true; } + for (; NextBRV != EndBRV && NextBRV->Line == LI.line_number(); ++NextBRV) { + renderViewDivider(OS, ViewDepth + 1); + renderBranchView(OS, *NextBRV, ViewDepth + 1); + RenderedSubView = true; + } if (RenderedSubView) renderViewDivider(OS, ViewDepth + 1); renderLineSuffix(OS, ViewDepth); |