diff --git a/llvm/include/llvm/ProfileData/InstrProfReader.h b/llvm/include/llvm/ProfileData/InstrProfReader.h index 34dba870d8da3..37f8e1612a878 100644 --- a/llvm/include/llvm/ProfileData/InstrProfReader.h +++ b/llvm/include/llvm/ProfileData/InstrProfReader.h @@ -693,15 +693,10 @@ class IndexedInstrProfReader : public InstrProfReader { /// Context sensitive profile summary data. std::unique_ptr CS_Summary; IndexedMemProfReader MemProfReader; - /// VTableNamePtr points to the beginning of compressed vtable names. - /// When a symtab is constructed from profiles by llvm-profdata, the list of - /// names could be decompressed based on `VTableNamePtr` and - /// `CompressedVTableNamesLen`. + /// The compressed vtable names, to be used for symtab construction. /// A compiler that reads indexed profiles could construct symtab from module /// IR so it doesn't need the decompressed names. - const char *VTableNamePtr = nullptr; - /// The length of compressed vtable names. - uint64_t CompressedVTableNamesLen = 0; + StringRef VTableName; /// Total size of binary ids. uint64_t BinaryIdsSize{0}; /// Start address of binary id length and data pairs. diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp index 7758363d9c952..ec78a50af2cb8 100644 --- a/llvm/lib/ProfileData/InstrProfReader.cpp +++ b/llvm/lib/ProfileData/InstrProfReader.cpp @@ -1403,14 +1403,16 @@ Error IndexedInstrProfReader::readHeader() { if (Header->getIndexedProfileVersion() >= 12) { const unsigned char *Ptr = Start + Header->VTableNamesOffset; - CompressedVTableNamesLen = + uint64_t CompressedVTableNamesLen = support::endian::readNext(Ptr); // Writer first writes the length of compressed string, and then the actual // content. - VTableNamePtr = (const char *)Ptr; + const char *VTableNamePtr = (const char *)Ptr; if (VTableNamePtr > (const char *)DataBuffer->getBufferEnd()) return make_error(instrprof_error::truncated); + + VTableName = StringRef(VTableNamePtr, CompressedVTableNamesLen); } if (Header->getIndexedProfileVersion() >= 10 && @@ -1466,8 +1468,7 @@ InstrProfSymtab &IndexedInstrProfReader::getSymtab() { auto NewSymtab = std::make_unique(); - if (Error E = NewSymtab->initVTableNamesFromCompressedStrings( - StringRef(VTableNamePtr, CompressedVTableNamesLen))) { + if (Error E = NewSymtab->initVTableNamesFromCompressedStrings(VTableName)) { auto [ErrCode, Msg] = InstrProfError::take(std::move(E)); consumeError(error(ErrCode, Msg)); }