mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[Coverage] move a local var to be BinaryCoverageReader's member
The symtab is logically referenced beyond the call to the create method. This changes makes sure its lifetime matches that of the reader. llvm-svn: 258036
This commit is contained in:
parent
d69eaa7d57
commit
7d5bc597d7
@ -158,6 +158,7 @@ public:
|
||||
private:
|
||||
std::vector<StringRef> Filenames;
|
||||
std::vector<ProfileMappingRecord> MappingRecords;
|
||||
InstrProfSymtab ProfileNames;
|
||||
size_t CurrentRecord;
|
||||
std::vector<StringRef> FunctionsFilenames;
|
||||
std::vector<CounterExpression> Expressions;
|
||||
|
@ -546,33 +546,36 @@ BinaryCoverageReader::create(std::unique_ptr<MemoryBuffer> &ObjectBuffer,
|
||||
StringRef Arch) {
|
||||
std::unique_ptr<BinaryCoverageReader> Reader(new BinaryCoverageReader());
|
||||
|
||||
InstrProfSymtab ProfileNames;
|
||||
StringRef Coverage;
|
||||
uint8_t BytesInAddress;
|
||||
support::endianness Endian;
|
||||
std::error_code EC;
|
||||
if (ObjectBuffer->getBuffer().startswith(TestingFormatMagic))
|
||||
// This is a special format used for testing.
|
||||
EC = loadTestingFormat(ObjectBuffer->getBuffer(), ProfileNames, Coverage,
|
||||
BytesInAddress, Endian);
|
||||
EC = loadTestingFormat(ObjectBuffer->getBuffer(), Reader->ProfileNames,
|
||||
Coverage, BytesInAddress, Endian);
|
||||
else
|
||||
EC = loadBinaryFormat(ObjectBuffer->getMemBufferRef(), ProfileNames,
|
||||
EC = loadBinaryFormat(ObjectBuffer->getMemBufferRef(), Reader->ProfileNames,
|
||||
Coverage, BytesInAddress, Endian, Arch);
|
||||
if (EC)
|
||||
return EC;
|
||||
|
||||
if (BytesInAddress == 4 && Endian == support::endianness::little)
|
||||
EC = readCoverageMappingData<uint32_t, support::endianness::little>(
|
||||
ProfileNames, Coverage, Reader->MappingRecords, Reader->Filenames);
|
||||
Reader->ProfileNames, Coverage, Reader->MappingRecords,
|
||||
Reader->Filenames);
|
||||
else if (BytesInAddress == 4 && Endian == support::endianness::big)
|
||||
EC = readCoverageMappingData<uint32_t, support::endianness::big>(
|
||||
ProfileNames, Coverage, Reader->MappingRecords, Reader->Filenames);
|
||||
Reader->ProfileNames, Coverage, Reader->MappingRecords,
|
||||
Reader->Filenames);
|
||||
else if (BytesInAddress == 8 && Endian == support::endianness::little)
|
||||
EC = readCoverageMappingData<uint64_t, support::endianness::little>(
|
||||
ProfileNames, Coverage, Reader->MappingRecords, Reader->Filenames);
|
||||
Reader->ProfileNames, Coverage, Reader->MappingRecords,
|
||||
Reader->Filenames);
|
||||
else if (BytesInAddress == 8 && Endian == support::endianness::big)
|
||||
EC = readCoverageMappingData<uint64_t, support::endianness::big>(
|
||||
ProfileNames, Coverage, Reader->MappingRecords, Reader->Filenames);
|
||||
Reader->ProfileNames, Coverage, Reader->MappingRecords,
|
||||
Reader->Filenames);
|
||||
else
|
||||
return coveragemap_error::malformed;
|
||||
if (EC)
|
||||
|
Loading…
x
Reference in New Issue
Block a user