[llvm-branch-commits] [llvm] 6bf398b - Revert "[llvm-cov] Add support for baseline coverage (#117910)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jun 13 10:04:11 PDT 2025
Author: Keith Smiley
Date: 2025-06-13T10:04:08-07:00
New Revision: 6bf398b89982b4a47edf48ce2c8c627e8a94ccf9
URL: https://github.com/llvm/llvm-project/commit/6bf398b89982b4a47edf48ce2c8c627e8a94ccf9
DIFF: https://github.com/llvm/llvm-project/commit/6bf398b89982b4a47edf48ce2c8c627e8a94ccf9.diff
LOG: Revert "[llvm-cov] Add support for baseline coverage (#117910)"
This reverts commit dc9e300f12f3b9c8160dbfb0bc32252ad99c3ba7.
Added:
Modified:
llvm/docs/CommandGuide/llvm-cov.rst
llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
llvm/tools/llvm-cov/CodeCoverage.cpp
llvm/unittests/ProfileData/CoverageMappingTest.cpp
Removed:
llvm/test/tools/llvm-cov/showLineExecutionCounts-lcov-baseline.test
################################################################################
diff --git a/llvm/docs/CommandGuide/llvm-cov.rst b/llvm/docs/CommandGuide/llvm-cov.rst
index f4db60cf06fa7..968f3c452f558 100644
--- a/llvm/docs/CommandGuide/llvm-cov.rst
+++ b/llvm/docs/CommandGuide/llvm-cov.rst
@@ -380,11 +380,6 @@ OPTIONS
Fail if an object file cannot be found for a binary ID present in the profile,
neither on the command line nor via binary ID lookup.
-.. option:: -empty-profile
-
- Display the baseline coverage of the binaries with all zero execution counts.
- Mutually exclusive with -instr-profile.
-
.. program:: llvm-cov report
.. _llvm-cov-report:
@@ -475,11 +470,6 @@ OPTIONS
Fail if an object file cannot be found for a binary ID present in the profile,
neither on the command line nor via binary ID lookup.
-.. option:: -empty-profile
-
- Display the baseline coverage of the binaries with all zero execution counts.
- Mutually exclusive with -instr-profile.
-
.. program:: llvm-cov export
.. _llvm-cov-export:
@@ -572,11 +562,6 @@ OPTIONS
Fail if an object file cannot be found for a binary ID present in the profile,
neither on the command line nor via binary ID lookup.
-.. option:: -empty-profile
-
- Export the baseline coverage of the binaries with all zero execution counts.
- Mutually exclusive with -instr-profile.
-
CONVERT-FOR-TESTING COMMAND
---------------------------
diff --git a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
index d1230b0ba7c58..e62ce5e3d8fa6 100644
--- a/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
+++ b/llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
@@ -991,23 +991,18 @@ class CoverageMapping {
// Load coverage records from readers.
static Error loadFromReaders(
ArrayRef<std::unique_ptr<CoverageMappingReader>> CoverageReaders,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader,
- CoverageMapping &Coverage);
+ IndexedInstrProfReader &ProfileReader, CoverageMapping &Coverage);
// Load coverage records from file.
static Error
loadFromFile(StringRef Filename, StringRef Arch, StringRef CompilationDir,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader,
- CoverageMapping &Coverage, bool &DataFound,
+ IndexedInstrProfReader &ProfileReader, CoverageMapping &Coverage,
+ bool &DataFound,
SmallVectorImpl<object::BuildID> *FoundBinaryIDs = nullptr);
/// Add a function record corresponding to \p Record.
- Error loadFunctionRecord(
- const CoverageMappingRecord &Record,
- const std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader);
+ Error loadFunctionRecord(const CoverageMappingRecord &Record,
+ IndexedInstrProfReader &ProfileReader);
/// Look up the indices for function records which are at least partially
/// defined in the specified file. This is guaranteed to return a superset of
@@ -1023,16 +1018,15 @@ class CoverageMapping {
/// Load the coverage mapping using the given readers.
LLVM_ABI static Expected<std::unique_ptr<CoverageMapping>>
load(ArrayRef<std::unique_ptr<CoverageMappingReader>> CoverageReaders,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader);
+ IndexedInstrProfReader &ProfileReader);
/// Load the coverage mapping from the given object files and profile. If
/// \p Arches is non-empty, it must specify an architecture for each object.
/// Ignores non-instrumented object files unless all are not instrumented.
LLVM_ABI static Expected<std::unique_ptr<CoverageMapping>>
- load(ArrayRef<StringRef> ObjectFilenames,
- std::optional<StringRef> ProfileFilename, vfs::FileSystem &FS,
- ArrayRef<StringRef> Arches = {}, StringRef CompilationDir = "",
+ load(ArrayRef<StringRef> ObjectFilenames, StringRef ProfileFilename,
+ vfs::FileSystem &FS, ArrayRef<StringRef> Arches = {},
+ StringRef CompilationDir = "",
const object::BuildIDFetcher *BIDFetcher = nullptr,
bool CheckBinaryIDs = false);
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
index 429ec5c19f1f8..dd74eb054a34c 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
@@ -823,8 +823,7 @@ class MCDCDecisionRecorder {
Error CoverageMapping::loadFunctionRecord(
const CoverageMappingRecord &Record,
- const std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader) {
+ IndexedInstrProfReader &ProfileReader) {
StringRef OrigFuncName = Record.FunctionName;
if (OrigFuncName.empty())
return make_error<CoverageMapError>(coveragemap_error::malformed,
@@ -838,44 +837,35 @@ Error CoverageMapping::loadFunctionRecord(
CounterMappingContext Ctx(Record.Expressions);
std::vector<uint64_t> Counts;
- if (ProfileReader) {
- if (Error E = ProfileReader.value().get().getFunctionCounts(
- Record.FunctionName, Record.FunctionHash, Counts)) {
- instrprof_error IPE = std::get<0>(InstrProfError::take(std::move(E)));
- if (IPE == instrprof_error::hash_mismatch) {
- FuncHashMismatches.emplace_back(std::string(Record.FunctionName),
- Record.FunctionHash);
- return Error::success();
- }
- if (IPE != instrprof_error::unknown_function)
- return make_error<InstrProfError>(IPE);
- Counts.assign(getMaxCounterID(Ctx, Record) + 1, 0);
+ if (Error E = ProfileReader.getFunctionCounts(Record.FunctionName,
+ Record.FunctionHash, Counts)) {
+ instrprof_error IPE = std::get<0>(InstrProfError::take(std::move(E)));
+ if (IPE == instrprof_error::hash_mismatch) {
+ FuncHashMismatches.emplace_back(std::string(Record.FunctionName),
+ Record.FunctionHash);
+ return Error::success();
}
- } else {
+ if (IPE != instrprof_error::unknown_function)
+ return make_error<InstrProfError>(IPE);
Counts.assign(getMaxCounterID(Ctx, Record) + 1, 0);
}
Ctx.setCounts(Counts);
bool IsVersion11 =
- ProfileReader && ProfileReader.value().get().getVersion() <
- IndexedInstrProf::ProfVersion::Version12;
+ ProfileReader.getVersion() < IndexedInstrProf::ProfVersion::Version12;
BitVector Bitmap;
- if (ProfileReader) {
- if (Error E = ProfileReader.value().get().getFunctionBitmap(
- Record.FunctionName, Record.FunctionHash, Bitmap)) {
- instrprof_error IPE = std::get<0>(InstrProfError::take(std::move(E)));
- if (IPE == instrprof_error::hash_mismatch) {
- FuncHashMismatches.emplace_back(std::string(Record.FunctionName),
- Record.FunctionHash);
- return Error::success();
- }
- if (IPE != instrprof_error::unknown_function)
- return make_error<InstrProfError>(IPE);
- Bitmap = BitVector(getMaxBitmapSize(Record, IsVersion11));
+ if (Error E = ProfileReader.getFunctionBitmap(Record.FunctionName,
+ Record.FunctionHash, Bitmap)) {
+ instrprof_error IPE = std::get<0>(InstrProfError::take(std::move(E)));
+ if (IPE == instrprof_error::hash_mismatch) {
+ FuncHashMismatches.emplace_back(std::string(Record.FunctionName),
+ Record.FunctionHash);
+ return Error::success();
}
- } else {
- Bitmap = BitVector(getMaxBitmapSize(Record, false));
+ if (IPE != instrprof_error::unknown_function)
+ return make_error<InstrProfError>(IPE);
+ Bitmap = BitVector(getMaxBitmapSize(Record, IsVersion11));
}
Ctx.setBitmap(std::move(Bitmap));
@@ -969,14 +959,10 @@ Error CoverageMapping::loadFunctionRecord(
// of CoverageMappingReader instances.
Error CoverageMapping::loadFromReaders(
ArrayRef<std::unique_ptr<CoverageMappingReader>> CoverageReaders,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader,
- CoverageMapping &Coverage) {
- assert(!Coverage.SingleByteCoverage || !ProfileReader ||
- *Coverage.SingleByteCoverage ==
- ProfileReader.value().get().hasSingleByteCoverage());
- Coverage.SingleByteCoverage =
- !ProfileReader || ProfileReader.value().get().hasSingleByteCoverage();
+ IndexedInstrProfReader &ProfileReader, CoverageMapping &Coverage) {
+ assert(!Coverage.SingleByteCoverage ||
+ *Coverage.SingleByteCoverage == ProfileReader.hasSingleByteCoverage());
+ Coverage.SingleByteCoverage = ProfileReader.hasSingleByteCoverage();
for (const auto &CoverageReader : CoverageReaders) {
for (auto RecordOrErr : *CoverageReader) {
if (Error E = RecordOrErr.takeError())
@@ -991,8 +977,7 @@ Error CoverageMapping::loadFromReaders(
Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
ArrayRef<std::unique_ptr<CoverageMappingReader>> CoverageReaders,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader) {
+ IndexedInstrProfReader &ProfileReader) {
auto Coverage = std::unique_ptr<CoverageMapping>(new CoverageMapping());
if (Error E = loadFromReaders(CoverageReaders, ProfileReader, *Coverage))
return std::move(E);
@@ -1001,19 +986,18 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
// If E is a no_data_found error, returns success. Otherwise returns E.
static Error handleMaybeNoDataFoundError(Error E) {
- return handleErrors(std::move(E), [](const CoverageMapError &CME) {
- if (CME.get() == coveragemap_error::no_data_found)
- return static_cast<Error>(Error::success());
- return make_error<CoverageMapError>(CME.get(), CME.getMessage());
- });
+ return handleErrors(
+ std::move(E), [](const CoverageMapError &CME) {
+ if (CME.get() == coveragemap_error::no_data_found)
+ return static_cast<Error>(Error::success());
+ return make_error<CoverageMapError>(CME.get(), CME.getMessage());
+ });
}
Error CoverageMapping::loadFromFile(
StringRef Filename, StringRef Arch, StringRef CompilationDir,
- std::optional<std::reference_wrapper<IndexedInstrProfReader>>
- &ProfileReader,
- CoverageMapping &Coverage, bool &DataFound,
- SmallVectorImpl<object::BuildID> *FoundBinaryIDs) {
+ IndexedInstrProfReader &ProfileReader, CoverageMapping &Coverage,
+ bool &DataFound, SmallVectorImpl<object::BuildID> *FoundBinaryIDs) {
auto CovMappingBufOrErr = MemoryBuffer::getFileOrSTDIN(
Filename, /*IsText=*/false, /*RequiresNullTerminator=*/false);
if (std::error_code EC = CovMappingBufOrErr.getError())
@@ -1049,23 +1033,13 @@ Error CoverageMapping::loadFromFile(
}
Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
- ArrayRef<StringRef> ObjectFilenames,
- std::optional<StringRef> ProfileFilename, vfs::FileSystem &FS,
- ArrayRef<StringRef> Arches, StringRef CompilationDir,
+ ArrayRef<StringRef> ObjectFilenames, StringRef ProfileFilename,
+ vfs::FileSystem &FS, ArrayRef<StringRef> Arches, StringRef CompilationDir,
const object::BuildIDFetcher *BIDFetcher, bool CheckBinaryIDs) {
- std::unique_ptr<IndexedInstrProfReader> ProfileReader;
- if (ProfileFilename) {
- auto ProfileReaderOrErr =
- IndexedInstrProfReader::create(ProfileFilename.value(), FS);
- if (Error E = ProfileReaderOrErr.takeError())
- return createFileError(ProfileFilename.value(), std::move(E));
- ProfileReader = std::move(ProfileReaderOrErr.get());
- }
- auto ProfileReaderRef =
- ProfileReader
- ? std::optional<std::reference_wrapper<IndexedInstrProfReader>>(
- *ProfileReader)
- : std::nullopt;
+ auto ProfileReaderOrErr = IndexedInstrProfReader::create(ProfileFilename, FS);
+ if (Error E = ProfileReaderOrErr.takeError())
+ return createFileError(ProfileFilename, std::move(E));
+ auto ProfileReader = std::move(ProfileReaderOrErr.get());
auto Coverage = std::unique_ptr<CoverageMapping>(new CoverageMapping());
bool DataFound = false;
@@ -1079,17 +1053,16 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
SmallVector<object::BuildID> FoundBinaryIDs;
for (const auto &File : llvm::enumerate(ObjectFilenames)) {
- if (Error E = loadFromFile(File.value(), GetArch(File.index()),
- CompilationDir, ProfileReaderRef, *Coverage,
- DataFound, &FoundBinaryIDs))
+ if (Error E =
+ loadFromFile(File.value(), GetArch(File.index()), CompilationDir,
+ *ProfileReader, *Coverage, DataFound, &FoundBinaryIDs))
return std::move(E);
}
if (BIDFetcher) {
std::vector<object::BuildID> ProfileBinaryIDs;
- if (ProfileReader)
- if (Error E = ProfileReader->readBinaryIds(ProfileBinaryIDs))
- return createFileError(ProfileFilename.value(), std::move(E));
+ if (Error E = ProfileReader->readBinaryIds(ProfileBinaryIDs))
+ return createFileError(ProfileFilename, std::move(E));
SmallVector<object::BuildIDRef> BinaryIDsToFetch;
if (!ProfileBinaryIDs.empty()) {
@@ -1109,12 +1082,12 @@ Expected<std::unique_ptr<CoverageMapping>> CoverageMapping::load(
if (PathOpt) {
std::string Path = std::move(*PathOpt);
StringRef Arch = Arches.size() == 1 ? Arches.front() : StringRef();
- if (Error E = loadFromFile(Path, Arch, CompilationDir, ProfileReaderRef,
- *Coverage, DataFound))
+ if (Error E = loadFromFile(Path, Arch, CompilationDir, *ProfileReader,
+ *Coverage, DataFound))
return std::move(E);
} else if (CheckBinaryIDs) {
return createFileError(
- ProfileFilename.value(),
+ ProfileFilename,
createStringError(errc::no_such_file_or_directory,
"Missing binary ID: " +
llvm::toHex(BinaryID, /*LowerCase=*/true)));
diff --git a/llvm/test/tools/llvm-cov/showLineExecutionCounts-lcov-baseline.test b/llvm/test/tools/llvm-cov/showLineExecutionCounts-lcov-baseline.test
deleted file mode 100644
index bce886bdf510b..0000000000000
--- a/llvm/test/tools/llvm-cov/showLineExecutionCounts-lcov-baseline.test
+++ /dev/null
@@ -1,37 +0,0 @@
-// FULL: SF:{{.*}}showLineExecutionCounts.cpp
-// FULL: FN:6,main
-// FULL: FNDA:0,main
-// FULL: FNF:1
-// FULL: FNH:0
-int main() { // FULL: DA:[[@LINE]],0
- int x = 0; // FULL: DA:[[@LINE]],0
- // FULL: DA:[[@LINE]],0
- if (x) { // FULL: DA:[[@LINE]],0
- x = 0; // FULL: DA:[[@LINE]],0
- } else { // FULL: DA:[[@LINE]],0
- x = 1; // FULL: DA:[[@LINE]],0
- } // FULL: DA:[[@LINE]],0
- // FULL: DA:[[@LINE]],0
- for (int i = 0; i < 100; ++i) { // FULL: DA:[[@LINE]],0
- x = 1; // FULL: DA:[[@LINE]],0
- } // FULL: DA:[[@LINE]],0
- // FULL: DA:[[@LINE]],0
- x = x < 10 ? x + 1 : x - 1; // FULL: DA:[[@LINE]],0
- x = x > 10 ? // FULL: DA:[[@LINE]],0
- x - 1: // FULL: DA:[[@LINE]],0
- x + 1; // FULL: DA:[[@LINE]],0
- // FULL: DA:[[@LINE]],0
- return 0; // FULL: DA:[[@LINE]],0
-} // FULL: DA:[[@LINE]],0
-// FULL: LF:20
-// FULL: LH:0
-// FULL: end_of_record
-// RUN: llvm-cov export -format=lcov %S/Inputs/lineExecutionCounts.covmapping -empty-profile %s | FileCheck -check-prefixes=FULL %s
-
-// RUN: llvm-cov export -format=lcov -summary-only %S/Inputs/lineExecutionCounts.covmapping -empty-profile %s | FileCheck -check-prefixes=SUMMARYONLY %s
-// SUMMARYONLY: SF:{{.*}}showLineExecutionCounts.cpp
-// SUMMARYONLY: FNF:1
-// SUMMARYONLY: FNH:0
-// SUMMARYONLY: LF:20
-// SUMMARYONLY: LH:0
-// SUMMARYONLY: end_of_record
diff --git a/llvm/tools/llvm-cov/CodeCoverage.cpp b/llvm/tools/llvm-cov/CodeCoverage.cpp
index 6c66858c4de8c..1f2484cd4dda9 100644
--- a/llvm/tools/llvm-cov/CodeCoverage.cpp
+++ b/llvm/tools/llvm-cov/CodeCoverage.cpp
@@ -153,7 +153,7 @@ class CodeCoverageTool {
bool HadSourceFiles = false;
/// The path to the indexed profile.
- std::optional<std::string> PGOFilename;
+ std::string PGOFilename;
/// A list of input source files.
std::vector<std::string> SourceFiles;
@@ -455,12 +455,10 @@ static bool modifiedTimeGT(StringRef LHS, StringRef RHS) {
}
std::unique_ptr<CoverageMapping> CodeCoverageTool::load() {
- if (PGOFilename) {
- for (StringRef ObjectFilename : ObjectFilenames)
- if (modifiedTimeGT(ObjectFilename, PGOFilename.value()))
- warning("profile data may be out of date - object is newer",
- ObjectFilename);
- }
+ for (StringRef ObjectFilename : ObjectFilenames)
+ if (modifiedTimeGT(ObjectFilename, PGOFilename))
+ warning("profile data may be out of date - object is newer",
+ ObjectFilename);
auto FS = vfs::getRealFileSystem();
auto CoverageOrErr = CoverageMapping::load(
ObjectFilenames, PGOFilename, *FS, CoverageArches,
@@ -670,16 +668,11 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
"dump-collected-paths", cl::Optional, cl::Hidden,
cl::desc("Show the collected paths to source files"));
- cl::opt<std::string> PGOFilename(
- "instr-profile", cl::Optional,
+ cl::opt<std::string, true> PGOFilename(
+ "instr-profile", cl::Required, cl::location(this->PGOFilename),
cl::desc(
"File with the profile data obtained after an instrumented run"));
- cl::opt<bool> EmptyProfile(
- "empty-profile", cl::Optional,
- cl::desc("Use a synthetic profile with no data to generate "
- "baseline coverage"));
-
cl::list<std::string> Arches(
"arch", cl::desc("architectures of the coverage mapping binaries"));
@@ -812,15 +805,6 @@ int CodeCoverageTool::run(Command Cmd, int argc, const char **argv) {
}
this->CheckBinaryIDs = CheckBinaryIDs;
- if (!PGOFilename.empty() == EmptyProfile) {
- error(
- "exactly one of -instr-profile and -empty-profile must be specified");
- return 1;
- }
- if (!PGOFilename.empty()) {
- this->PGOFilename = std::make_optional(PGOFilename.getValue());
- }
-
if (!CovFilename.empty())
ObjectFilenames.emplace_back(CovFilename);
for (const std::string &Filename : CovFilenames)
@@ -1132,22 +1116,20 @@ int CodeCoverageTool::doShow(int argc, const char **argv,
}
}
- if (PGOFilename) {
- sys::fs::file_status Status;
- if (std::error_code EC = sys::fs::status(PGOFilename.value(), Status)) {
- error("could not read profile data!" + EC.message(), PGOFilename.value());
- return 1;
- }
+ sys::fs::file_status Status;
+ if (std::error_code EC = sys::fs::status(PGOFilename, Status)) {
+ error("could not read profile data!" + EC.message(), PGOFilename);
+ return 1;
+ }
- if (ShowCreatedTime) {
- auto ModifiedTime = Status.getLastModificationTime();
- std::string ModifiedTimeStr = to_string(ModifiedTime);
- size_t found = ModifiedTimeStr.rfind(':');
- ViewOpts.CreatedTimeStr =
- (found != std::string::npos)
- ? "Created: " + ModifiedTimeStr.substr(0, found)
- : "Created: " + ModifiedTimeStr;
- }
+ if (ShowCreatedTime) {
+ auto ModifiedTime = Status.getLastModificationTime();
+ std::string ModifiedTimeStr = to_string(ModifiedTime);
+ size_t found = ModifiedTimeStr.rfind(':');
+ ViewOpts.CreatedTimeStr =
+ (found != std::string::npos)
+ ? "Created: " + ModifiedTimeStr.substr(0, found)
+ : "Created: " + ModifiedTimeStr;
}
auto Coverage = load();
@@ -1256,12 +1238,10 @@ int CodeCoverageTool::doReport(int argc, const char **argv,
return 1;
}
- if (PGOFilename) {
- sys::fs::file_status Status;
- if (std::error_code EC = sys::fs::status(PGOFilename.value(), Status)) {
- error("could not read profile data!" + EC.message(), PGOFilename.value());
- return 1;
- }
+ sys::fs::file_status Status;
+ if (std::error_code EC = sys::fs::status(PGOFilename, Status)) {
+ error("could not read profile data!" + EC.message(), PGOFilename);
+ return 1;
}
auto Coverage = load();
@@ -1323,12 +1303,10 @@ int CodeCoverageTool::doExport(int argc, const char **argv,
return 1;
}
- if (PGOFilename) {
- sys::fs::file_status Status;
- if (std::error_code EC = sys::fs::status(PGOFilename.value(), Status)) {
- error("could not read profile data!" + EC.message(), PGOFilename.value());
- return 1;
- }
+ sys::fs::file_status Status;
+ if (std::error_code EC = sys::fs::status(PGOFilename, Status)) {
+ error("could not read profile data!" + EC.message(), PGOFilename);
+ return 1;
}
auto Coverage = load();
diff --git a/llvm/unittests/ProfileData/CoverageMappingTest.cpp b/llvm/unittests/ProfileData/CoverageMappingTest.cpp
index c0e99cf80b944..46f881ecddb5f 100644
--- a/llvm/unittests/ProfileData/CoverageMappingTest.cpp
+++ b/llvm/unittests/ProfileData/CoverageMappingTest.cpp
@@ -277,9 +277,7 @@ struct CoverageMappingTest : ::testing::TestWithParam<std::tuple<bool, bool>> {
CoverageReaders.push_back(
std::make_unique<CoverageMappingReaderMock>(Funcs));
}
- auto ProfileReaderRef =
- std::make_optional(std::reference_wrapper(*ProfileReader));
- return CoverageMapping::load(CoverageReaders, ProfileReaderRef);
+ return CoverageMapping::load(CoverageReaders, *ProfileReader);
}
Error loadCoverageMapping(bool EmitFilenames = true) {
More information about the llvm-branch-commits
mailing list