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;
}
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 {
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;
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 !");
return reinterpret_cast<InstrProfValueData *>((char *)this +
getHeaderSize(NumValueSites));
}
-
-} // End of IndexedInstrProf namespace.
}
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;
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);
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);