summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/ProfileData/InstrProf.h83
-rw-r--r--llvm/lib/ProfileData/InstrProf.cpp7
-rw-r--r--llvm/lib/ProfileData/InstrProfReader.cpp5
-rw-r--r--llvm/lib/ProfileData/InstrProfWriter.cpp6
4 files changed, 49 insertions, 52 deletions
diff --git a/llvm/include/llvm/ProfileData/InstrProf.h b/llvm/include/llvm/ProfileData/InstrProf.h
index 2339a46f9c5..aa100a796f2 100644
--- a/llvm/include/llvm/ProfileData/InstrProf.h
+++ b/llvm/include/llvm/ProfileData/InstrProf.h
@@ -401,46 +401,6 @@ void InstrProfRecord::updateStrings(InstrProfStringTable *StrTab) {
VData.Value = (uint64_t)StrTab->insertString((const char *)VData.Value);
}
-namespace IndexedInstrProf {
-enum class HashT : uint32_t {
- MD5,
-
- Last = MD5
-};
-
-static inline uint64_t MD5Hash(StringRef Str) {
- MD5 Hash;
- Hash.update(Str);
- llvm::MD5::MD5Result Result;
- Hash.final(Result);
- // Return the least significant 8 bytes. Our MD5 implementation returns the
- // result in little endian, so we may need to swap bytes.
- using namespace llvm::support;
- return endian::read<uint64_t, little, unaligned>(Result);
-}
-
-static inline uint64_t ComputeHash(HashT Type, StringRef K) {
- switch (Type) {
- case HashT::MD5:
- return IndexedInstrProf::MD5Hash(K);
- }
- llvm_unreachable("Unhandled hash type");
-}
-
-const uint64_t Magic = 0x8169666f72706cff; // "\xfflprofi\x81"
-const uint64_t Version = 3;
-const HashT HashType = HashT::MD5;
-
-// This structure defines the file header of the LLVM profile
-// data file in indexed-format.
-struct Header {
- uint64_t Magic;
- uint64_t Version;
- uint64_t MaxFunctionCount;
- uint64_t HashType;
- uint64_t HashOffset;
-};
-
inline support::endianness getHostEndianness() {
return sys::IsLittleEndianHost ? support::little : support::big;
}
@@ -540,7 +500,48 @@ struct ValueProfData {
ValueProfRecord *getFirstValueProfRecord();
};
-} // end namespace IndexedInstrProf
+namespace IndexedInstrProf {
+
+enum class HashT : uint32_t {
+ MD5,
+
+ Last = MD5
+};
+
+static inline uint64_t MD5Hash(StringRef Str) {
+ MD5 Hash;
+ Hash.update(Str);
+ llvm::MD5::MD5Result Result;
+ Hash.final(Result);
+ // Return the least significant 8 bytes. Our MD5 implementation returns the
+ // result in little endian, so we may need to swap bytes.
+ using namespace llvm::support;
+ return endian::read<uint64_t, little, unaligned>(Result);
+}
+
+static inline uint64_t ComputeHash(HashT Type, StringRef K) {
+ switch (Type) {
+ case HashT::MD5:
+ return IndexedInstrProf::MD5Hash(K);
+ }
+ llvm_unreachable("Unhandled hash type");
+}
+
+const uint64_t Magic = 0x8169666f72706cff; // "\xfflprofi\x81"
+const uint64_t Version = 3;
+const HashT HashType = HashT::MD5;
+
+// This structure defines the file header of the LLVM profile
+// data file in indexed-format.
+struct Header {
+ uint64_t Magic;
+ uint64_t Version;
+ uint64_t MaxFunctionCount;
+ uint64_t HashType;
+ uint64_t HashOffset;
+};
+
+} // end namespace IndexedInstrProf
namespace RawInstrProf {
diff --git a/llvm/lib/ProfileData/InstrProf.cpp b/llvm/lib/ProfileData/InstrProf.cpp
index 2dd0f916c6d..fc7fc8aa1e2 100644
--- a/llvm/lib/ProfileData/InstrProf.cpp
+++ b/llvm/lib/ProfileData/InstrProf.cpp
@@ -131,8 +131,6 @@ GlobalVariable *createPGOFuncNameVar(Function &F, StringRef FuncName) {
return createPGOFuncNameVar(*F.getParent(), F.getLinkage(), FuncName);
}
-namespace IndexedInstrProf {
-
uint32_t ValueProfRecord::getHeaderSize(uint32_t NumValueSites) {
uint32_t Size = offsetof(ValueProfRecord, SiteCountArray) +
sizeof(uint8_t) * NumValueSites;
@@ -174,7 +172,8 @@ void ValueProfRecord::serializeFrom(const InstrProfRecord &Record,
DstVD[I] = SrcVD[I];
switch (ValueKind) {
case IPVK_IndirectCallTarget:
- DstVD[I].Value = ComputeHash(HashType, (const char *)DstVD[I].Value);
+ DstVD[I].Value = IndexedInstrProf::ComputeHash(
+ IndexedInstrProf::HashType, (const char *)DstVD[I].Value);
break;
default:
llvm_unreachable("value kind not handled !");
@@ -361,6 +360,4 @@ InstrProfValueData *ValueProfRecord::getValueData() {
return reinterpret_cast<InstrProfValueData *>((char *)this +
getHeaderSize(NumValueSites));
}
-
-} // End of IndexedInstrProf namespace.
}
diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp
index 6f201243736..479b6bc61d9 100644
--- a/llvm/lib/ProfileData/InstrProfReader.cpp
+++ b/llvm/lib/ProfileData/InstrProfReader.cpp
@@ -313,9 +313,8 @@ typedef InstrProfLookupTrait::offset_type offset_type;
bool InstrProfLookupTrait::ReadValueProfilingData(
const unsigned char *&D, const unsigned char *const End) {
- ErrorOr<std::unique_ptr<IndexedInstrProf::ValueProfData>> VDataPtrOrErr =
- IndexedInstrProf::ValueProfData::getValueProfData(
- D, End, ValueProfDataEndianness);
+ ErrorOr<std::unique_ptr<ValueProfData>> VDataPtrOrErr =
+ ValueProfData::getValueProfData(D, End, ValueProfDataEndianness);
if (VDataPtrOrErr.getError())
return false;
diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp
index b6725df5278..cb123e29982 100644
--- a/llvm/lib/ProfileData/InstrProfWriter.cpp
+++ b/llvm/lib/ProfileData/InstrProfWriter.cpp
@@ -53,7 +53,7 @@ public:
M += ProfRecord.Counts.size() * sizeof(uint64_t);
// Value data
- M += IndexedInstrProf::ValueProfData::getSize(ProfileData.second);
+ M += ValueProfData::getSize(ProfileData.second);
}
LE.write<offset_type>(M);
@@ -77,8 +77,8 @@ public:
LE.write<uint64_t>(I);
// Write value data
- std::unique_ptr<IndexedInstrProf::ValueProfData> VDataPtr =
- IndexedInstrProf::ValueProfData::serializeFrom(ProfileData.second);
+ std::unique_ptr<ValueProfData> VDataPtr =
+ ValueProfData::serializeFrom(ProfileData.second);
uint32_t S = VDataPtr->getSize();
VDataPtr->swapBytesFromHost(ValueProfDataEndianness);
Out.write((const char *)VDataPtr.get(), S);
OpenPOWER on IntegriCloud