[llvm] r253394 - [PGO] Move value profile data definitions out of IndexedInstrProf
Xinliang David Li via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 17 15:00:40 PST 2015
Author: davidxl
Date: Tue Nov 17 17:00:40 2015
New Revision: 253394
URL: http://llvm.org/viewvc/llvm-project?rev=253394&view=rev
Log:
[PGO] Move value profile data definitions out of IndexedInstrProf
Move the data structure defintions out of the namespace. The defs will
be shared by raw format. [NFC]
Modified:
llvm/trunk/include/llvm/ProfileData/InstrProf.h
llvm/trunk/lib/ProfileData/InstrProf.cpp
llvm/trunk/lib/ProfileData/InstrProfReader.cpp
llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
Modified: llvm/trunk/include/llvm/ProfileData/InstrProf.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ProfileData/InstrProf.h?rev=253394&r1=253393&r2=253394&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ProfileData/InstrProf.h (original)
+++ llvm/trunk/include/llvm/ProfileData/InstrProf.h Tue Nov 17 17:00:40 2015
@@ -401,46 +401,6 @@ void InstrProfRecord::updateStrings(Inst
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 {
Modified: llvm/trunk/lib/ProfileData/InstrProf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProf.cpp?rev=253394&r1=253393&r2=253394&view=diff
==============================================================================
--- llvm/trunk/lib/ProfileData/InstrProf.cpp (original)
+++ llvm/trunk/lib/ProfileData/InstrProf.cpp Tue Nov 17 17:00:40 2015
@@ -131,8 +131,6 @@ GlobalVariable *createPGOFuncNameVar(Fun
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(cons
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::get
return reinterpret_cast<InstrProfValueData *>((char *)this +
getHeaderSize(NumValueSites));
}
-
-} // End of IndexedInstrProf namespace.
}
Modified: llvm/trunk/lib/ProfileData/InstrProfReader.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProfReader.cpp?rev=253394&r1=253393&r2=253394&view=diff
==============================================================================
--- llvm/trunk/lib/ProfileData/InstrProfReader.cpp (original)
+++ llvm/trunk/lib/ProfileData/InstrProfReader.cpp Tue Nov 17 17:00:40 2015
@@ -313,9 +313,8 @@ typedef InstrProfLookupTrait::offset_typ
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;
Modified: llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProfWriter.cpp?rev=253394&r1=253393&r2=253394&view=diff
==============================================================================
--- llvm/trunk/lib/ProfileData/InstrProfWriter.cpp (original)
+++ llvm/trunk/lib/ProfileData/InstrProfWriter.cpp Tue Nov 17 17:00:40 2015
@@ -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);
More information about the llvm-commits
mailing list