summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ProfileData
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ProfileData')
-rw-r--r--llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp8
-rw-r--r--llvm/lib/ProfileData/InstrProf.cpp90
2 files changed, 21 insertions, 77 deletions
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp b/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
index dab602afd25..a34f359cd54 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
@@ -649,13 +649,15 @@ static Error loadBinaryFormat(MemoryBufferRef ObjectBuffer,
: support::endianness::big;
// Look for the sections that we are interested in.
- bool IsCoff = (dyn_cast<COFFObjectFile>(OF.get()) != nullptr);
+ auto ObjFormat = OF->getTripleObjectFormat();
auto NamesSection =
- lookupSection(*OF, getInstrProfNameSectionNameInObject(IsCoff));
+ lookupSection(*OF, getInstrProfSectionName(IPSK_name, ObjFormat,
+ /*AddSegmentInfo=*/false));
if (auto E = NamesSection.takeError())
return E;
auto CoverageSection =
- lookupSection(*OF, getInstrProfCoverageSectionNameInObject(IsCoff));
+ lookupSection(*OF, getInstrProfSectionName(IPSK_covmap, ObjFormat,
+ /*AddSegmentInfo=*/false));
if (auto E = CoverageSection.takeError())
return E;
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp
index a8f5b7f3d0e..64a65ccc11a 100644
--- a/llvm/lib/ProfileData/InstrProf.cpp
+++ b/llvm/lib/ProfileData/InstrProf.cpp
@@ -138,103 +138,45 @@ const std::error_category &llvm::instrprof_category() {
namespace {
-enum InstrProfSectKind {
-#define INSTR_PROF_SECT_ENTRY(Kind, SectName, SectNameCommon, SectNameCoff, \
- Prefix) \
- Kind,
-#include "llvm/ProfileData/InstrProfData.inc"
-};
-
-const char *InstrProfSectName[] = {
-#define INSTR_PROF_SECT_ENTRY(Kind, SectName, SectNameCommon, SectNameCoff, \
- Prefix) \
- SectName,
-#include "llvm/ProfileData/InstrProfData.inc"
-};
-
const char *InstrProfSectNameCommon[] = {
-#define INSTR_PROF_SECT_ENTRY(Kind, SectName, SectNameCommon, SectNameCoff, \
- Prefix) \
+#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix) \
SectNameCommon,
#include "llvm/ProfileData/InstrProfData.inc"
};
const char *InstrProfSectNameCoff[] = {
-#define INSTR_PROF_SECT_ENTRY(Kind, SectName, SectNameCommon, SectNameCoff, \
- Prefix) \
+#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix) \
SectNameCoff,
#include "llvm/ProfileData/InstrProfData.inc"
};
const char *InstrProfSectNamePrefix[] = {
-#define INSTR_PROF_SECT_ENTRY(Kind, SectName, SectNameCommon, SectNameCoff, \
- Prefix) \
+#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix) \
Prefix,
#include "llvm/ProfileData/InstrProfData.inc"
};
-std::string getInstrProfSectionName(bool isCoff, InstrProfSectKind Kind) {
- return isCoff ? InstrProfSectNameCoff[Kind] : InstrProfSectNameCommon[Kind];
-}
-
-std::string getInstrProfSectionName(const Module *M, InstrProfSectKind Kind) {
- if (!M)
- return InstrProfSectName[Kind];
-
- bool AddSegment = Triple(M->getTargetTriple()).isOSBinFormatMachO();
- std::string SectName;
- if (Triple(M->getTargetTriple()).isOSBinFormatCOFF())
- SectName = InstrProfSectNameCoff[Kind];
- else
- SectName = InstrProfSectNameCommon[Kind];
-
- if (AddSegment) {
- SectName = InstrProfSectNamePrefix[Kind] + SectName;
- if (Kind == IPSK_data) {
- SectName += ",regular,live_support";
- }
- }
- return SectName;
-}
-
} // namespace
namespace llvm {
-std::string getInstrProfCountersSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_cnts);
-}
-
-std::string getInstrProfNameSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_name);
-}
-
-std::string getInstrProfNameSectionNameInObject(bool isCoff) {
- return getInstrProfSectionName(isCoff, IPSK_name);
-}
-
-std::string getInstrProfDataSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_data);
-}
-
-std::string getInstrProfDataSectionNameInObject(bool isCoff) {
- return getInstrProfSectionName(isCoff, IPSK_data);
-}
+std::string getInstrProfSectionName(InstrProfSectKind IPSK,
+ Triple::ObjectFormatType OF,
+ bool AddSegmentInfo) {
+ std::string SectName;
-std::string getInstrProfValuesSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_vals);
-}
+ if (OF == Triple::MachO && AddSegmentInfo)
+ SectName = InstrProfSectNamePrefix[IPSK];
-std::string getInstrProfVNodesSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_vnodes);
-}
+ if (OF == Triple::COFF)
+ SectName += InstrProfSectNameCoff[IPSK];
+ else
+ SectName += InstrProfSectNameCommon[IPSK];
-std::string getInstrProfCoverageSectionName(const Module *M) {
- return getInstrProfSectionName(M, IPSK_covmap);
-}
+ if (OF == Triple::MachO && IPSK == IPSK_data && AddSegmentInfo)
+ SectName += ",regular,live_support";
-std::string getInstrProfCoverageSectionNameInObject(bool isCoff) {
- return getInstrProfSectionName(isCoff, IPSK_covmap);
+ return SectName;
}
void SoftInstrProfErrors::addError(instrprof_error IE) {
OpenPOWER on IntegriCloud