From: Justin Bogner Date: Thu, 7 May 2015 00:31:58 +0000 (+0000) Subject: InstrProf: Simplify looking up sections for coverage data X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f64a0c1b3e3bbd870511bb3ff69e27ace16423f3;p=oota-llvm.git InstrProf: Simplify looking up sections for coverage data git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236685 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ProfileData/CoverageMappingReader.cpp b/lib/ProfileData/CoverageMappingReader.cpp index eb77f775ca6..cf6cd58f953 100644 --- a/lib/ProfileData/CoverageMappingReader.cpp +++ b/lib/ProfileData/CoverageMappingReader.cpp @@ -427,6 +427,17 @@ static std::error_code loadTestingFormat(StringRef Data, return std::error_code(); } +static ErrorOr lookupSection(ObjectFile &OF, StringRef Name) { + StringRef FoundName; + for (const auto &Section : OF.sections()) { + if (auto EC = Section.getName(FoundName)) + return EC; + if (FoundName == Name) + return Section; + } + return coveragemap_error::no_data_found; +} + static std::error_code loadBinaryFormat(MemoryBufferRef ObjectBuffer, SectionData &ProfileNames, StringRef &CoverageMapping, @@ -461,27 +472,17 @@ static std::error_code loadBinaryFormat(MemoryBufferRef ObjectBuffer, : support::endianness::big; // Look for the sections that we are interested in. - int FoundSectionCount = 0; - SectionRef NamesSection, CoverageSection; - for (const auto &Section : OF->sections()) { - StringRef Name; - if (auto Err = Section.getName(Name)) - return Err; - if (Name == "__llvm_prf_names") { - NamesSection = Section; - } else if (Name == "__llvm_covmap") { - CoverageSection = Section; - } else - continue; - ++FoundSectionCount; - } - if (FoundSectionCount != 2) - return coveragemap_error::no_data_found; + auto NamesSection = lookupSection(*OF, "__llvm_prf_names"); + if (auto EC = NamesSection.getError()) + return EC; + auto CoverageSection = lookupSection(*OF, "__llvm_covmap"); + if (auto EC = CoverageSection.getError()) + return EC; // Get the contents of the given sections. - if (std::error_code EC = CoverageSection.getContents(CoverageMapping)) + if (std::error_code EC = CoverageSection->getContents(CoverageMapping)) return EC; - if (std::error_code EC = ProfileNames.load(NamesSection)) + if (std::error_code EC = ProfileNames.load(*NamesSection)) return EC; return std::error_code();