aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-cov/CodeCoverage.cpp
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2014-09-17 18:23:47 +0000
committerJustin Bogner <mail@justinbogner.com>2014-09-17 18:23:47 +0000
commitfe357c003f3a7c23aef0176d18eb22f0c5b0cd70 (patch)
tree91356d6e1b929f80d7229f9035a0421b2f0a0750 /llvm/tools/llvm-cov/CodeCoverage.cpp
parent2c8ed4b84fa01115deff4c5fc1d3b76924c354be (diff)
downloadllvm-fe357c003f3a7c23aef0176d18eb22f0c5b0cd70.zip
llvm-fe357c003f3a7c23aef0176d18eb22f0c5b0cd70.tar.gz
llvm-fe357c003f3a7c23aef0176d18eb22f0c5b0cd70.tar.bz2
llvm-cov: Rework the API for getting the coverage of a file (NFC)
This encapsulates how we handle the coverage regions of a file or function. In the old model, the user had to deal with nested regions, so they needed to maintain their own auxiliary data structures to get any useful information out of this. The new API provides a sequence of non-overlapping coverage segments, which makes it possible to render coverage information in a single pass and avoids a fair amount of extra work. llvm-svn: 217975
Diffstat (limited to 'llvm/tools/llvm-cov/CodeCoverage.cpp')
-rw-r--r--llvm/tools/llvm-cov/CodeCoverage.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp
index fcc1c6b..eef4185 100644
--- a/llvm/tools/llvm-cov/CodeCoverage.cpp
+++ b/llvm/tools/llvm-cov/CodeCoverage.cpp
@@ -284,12 +284,12 @@ void CodeCoverageTool::createExpansionSubView(
return;
auto SubView = llvm::make_unique<SourceCoverageView>(SourceBuffer.get(),
Parent.getOptions());
- SourceCoverageDataManager RegionManager;
+ auto RegionManager = llvm::make_unique<SourceCoverageDataManager>();
for (const auto &CR : Function.CountedRegions) {
if (CR.FileID == ExpandedRegion.ExpandedFileID)
- RegionManager.insert(CR);
+ RegionManager->insert(CR);
}
- SubView->load(RegionManager);
+ SubView->load(std::move(RegionManager));
createExpansionSubViews(*SubView, ExpandedRegion.ExpandedFileID, Function);
Parent.addExpansion(ExpandedRegion, std::move(SubView));
}
@@ -311,16 +311,16 @@ void CodeCoverageTool::createExpansionSubViews(
void CodeCoverageTool::createInstantiationSubView(
StringRef SourceFile, const FunctionCoverageMapping &Function,
SourceCoverageView &View) {
- SourceCoverageDataManager RegionManager;
+ auto RegionManager = llvm::make_unique<SourceCoverageDataManager>();
SmallSet<unsigned, 8> InterestingFileIDs;
if (!gatherInterestingFileIDs(SourceFile, Function, InterestingFileIDs))
return;
// Get the interesting regions
for (const auto &CR : Function.CountedRegions) {
if (InterestingFileIDs.count(CR.FileID))
- RegionManager.insert(CR);
+ RegionManager->insert(CR);
}
- View.load(RegionManager);
+ View.load(std::move(RegionManager));
unsigned MainFileID;
if (findMainViewFileID(SourceFile, Function, MainFileID))
return;
@@ -331,7 +331,7 @@ bool CodeCoverageTool::createSourceFileView(
StringRef SourceFile, SourceCoverageView &View,
ArrayRef<FunctionCoverageMapping> FunctionMappingRecords,
bool UseOnlyRegionsInMainFile) {
- SourceCoverageDataManager RegionManager;
+ auto RegionManager = llvm::make_unique<SourceCoverageDataManager>();
FunctionInstantiationSetCollector InstantiationSetCollector;
for (const auto &Function : FunctionMappingRecords) {
@@ -347,14 +347,14 @@ bool CodeCoverageTool::createSourceFileView(
// Get the interesting regions
for (const auto &CR : Function.CountedRegions) {
if (InterestingFileIDs.count(CR.FileID))
- RegionManager.insert(CR);
+ RegionManager->insert(CR);
}
InstantiationSetCollector.insert(Function, MainFileID);
createExpansionSubViews(View, MainFileID, Function);
}
- if (RegionManager.getSourceRegions().empty())
+ if (RegionManager->getCoverageSegments().empty())
return true;
- View.load(RegionManager);
+ View.load(std::move(RegionManager));
// Show instantiations
if (!ViewOpts.ShowFunctionInstantiations)
return false;
@@ -626,7 +626,7 @@ int CodeCoverageTool::show(int argc, const char **argv,
ViewOpts.colored_ostream(outs(), raw_ostream::CYAN)
<< Function.Name << " from " << SourceFile << ":";
outs() << "\n";
- mainView.render(outs());
+ mainView.render(outs(), /*WholeFile=*/false);
if (FunctionMappingRecords.size() > 1)
outs() << "\n";
}
@@ -663,7 +663,7 @@ int CodeCoverageTool::show(int argc, const char **argv,
ViewOpts.colored_ostream(outs(), raw_ostream::CYAN) << SourceFile << ":";
outs() << "\n";
}
- mainView.render(outs());
+ mainView.render(outs(), /*Wholefile=*/true);
if (SourceFiles.size() > 1)
outs() << "\n";
}