Skip to content

Commit fdb050a

Browse files
Revert "[MemProf] Use radix tree for alloc contexts in bitcode summaries" (llvm#117395)
Reverts llvm#117066 This is causing some build bot failures that need investigation.
1 parent ccb4702 commit fdb050a

File tree

7 files changed

+30
-243
lines changed

7 files changed

+30
-243
lines changed

llvm/include/llvm/Bitcode/LLVMBitCodes.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -307,12 +307,12 @@ enum GlobalValueSummarySymtabCodes {
307307
// [valueid, n x stackidindex]
308308
FS_PERMODULE_CALLSITE_INFO = 26,
309309
// Summary of per-module allocation memprof metadata.
310-
// [nummib, nummib x (alloc type, context radix tree index),
310+
// [nummib, nummib x (alloc type, numstackids, numstackids x stackidindex),
311311
// [nummib x (numcontext x total size)]?]
312312
FS_PERMODULE_ALLOC_INFO = 27,
313313
// Summary of combined index memprof callsite metadata.
314-
// [valueid, context radix tree index, numver,
315-
// numver x version]
314+
// [valueid, numstackindices, numver,
315+
// numstackindices x stackidindex, numver x version]
316316
FS_COMBINED_CALLSITE_INFO = 28,
317317
// Summary of combined index allocation memprof metadata.
318318
// [nummib, numver,
@@ -331,10 +331,6 @@ enum GlobalValueSummarySymtabCodes {
331331
// the entries must be in the exact same order as the corresponding sizes.
332332
// [nummib x (numcontext x full stack id)]
333333
FS_ALLOC_CONTEXT_IDS = 31,
334-
// Linearized radix tree of allocation contexts. See the description above the
335-
// CallStackRadixTreeBuilder class in ProfileData/MemProf.h for format.
336-
// [n x entry]
337-
FS_CONTEXT_RADIX_TREE_ARRAY = 32,
338334
};
339335

340336
enum MetadataCodes {

llvm/lib/Bitcode/Reader/BitcodeAnalyzer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,6 @@ GetCodeName(unsigned CodeID, unsigned BlockID,
329329
STRINGIFY_CODE(FS, COMBINED_ALLOC_INFO)
330330
STRINGIFY_CODE(FS, STACK_IDS)
331331
STRINGIFY_CODE(FS, ALLOC_CONTEXT_IDS)
332-
STRINGIFY_CODE(FS, CONTEXT_RADIX_TREE_ARRAY)
333332
}
334333
case bitc::METADATA_ATTACHMENT_ID:
335334
switch (CodeID) {

llvm/lib/Bitcode/Reader/BitcodeReader.cpp

Lines changed: 16 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -987,10 +987,6 @@ class ModuleSummaryIndexBitcodeReader : public BitcodeReaderBase {
987987
/// ids from the lists in the callsite and alloc entries to the index.
988988
std::vector<uint64_t> StackIds;
989989

990-
/// Linearized radix tree of allocation contexts. See the description above
991-
/// the CallStackRadixTreeBuilder class in ProfileData/MemProf.h for format.
992-
std::vector<uint64_t> RadixArray;
993-
994990
public:
995991
ModuleSummaryIndexBitcodeReader(
996992
BitstreamCursor Stream, StringRef Strtab, ModuleSummaryIndex &TheIndex,
@@ -1017,8 +1013,6 @@ class ModuleSummaryIndexBitcodeReader : public BitcodeReaderBase {
10171013
TypeIdCompatibleVtableInfo &TypeId);
10181014
std::vector<FunctionSummary::ParamAccess>
10191015
parseParamAccesses(ArrayRef<uint64_t> Record);
1020-
SmallVector<unsigned> parseAllocInfoContext(ArrayRef<uint64_t> Record,
1021-
unsigned &I);
10221016

10231017
template <bool AllowNullValueInfo = false>
10241018
std::pair<ValueInfo, GlobalValue::GUID>
@@ -7550,48 +7544,6 @@ void ModuleSummaryIndexBitcodeReader::parseTypeIdCompatibleVtableSummaryRecord(
75507544
parseTypeIdCompatibleVtableInfo(Record, Slot, TypeId);
75517545
}
75527546

7553-
SmallVector<unsigned> ModuleSummaryIndexBitcodeReader::parseAllocInfoContext(
7554-
ArrayRef<uint64_t> Record, unsigned &I) {
7555-
SmallVector<unsigned> StackIdList;
7556-
// For backwards compatibility with old format before radix tree was
7557-
// used, simply see if we found a radix tree array record (and thus if
7558-
// the RadixArray is non-empty).
7559-
if (RadixArray.empty()) {
7560-
unsigned NumStackEntries = Record[I++];
7561-
assert(Record.size() - I >= NumStackEntries);
7562-
StackIdList.reserve(NumStackEntries);
7563-
for (unsigned J = 0; J < NumStackEntries; J++) {
7564-
assert(Record[I] < StackIds.size());
7565-
StackIdList.push_back(
7566-
TheIndex.addOrGetStackIdIndex(StackIds[Record[I++]]));
7567-
}
7568-
} else {
7569-
unsigned RadixIndex = Record[I++];
7570-
// See the comments above CallStackRadixTreeBuilder in ProfileData/MemProf.h
7571-
// for a detailed description of the radix tree array format. Briefly, the
7572-
// first entry will be the number of frames, any negative values are the
7573-
// negative of the offset of the next frame, and otherwise the frames are in
7574-
// increasing linear order.
7575-
assert(RadixIndex < RadixArray.size());
7576-
unsigned NumStackIds = RadixArray[RadixIndex++];
7577-
StackIdList.reserve(NumStackIds);
7578-
while (NumStackIds--) {
7579-
assert(RadixIndex < RadixArray.size());
7580-
unsigned Elem = RadixArray[RadixIndex];
7581-
if (static_cast<std::make_signed_t<unsigned>>(Elem) < 0) {
7582-
RadixIndex = RadixIndex - Elem;
7583-
assert(RadixIndex < RadixArray.size());
7584-
Elem = RadixArray[RadixIndex];
7585-
// We shouldn't encounter a second offset in a row.
7586-
assert(static_cast<std::make_signed_t<unsigned>>(Elem) >= 0);
7587-
}
7588-
RadixIndex++;
7589-
StackIdList.push_back(TheIndex.addOrGetStackIdIndex(StackIds[Elem]));
7590-
}
7591-
}
7592-
return StackIdList;
7593-
}
7594-
75957547
static void setSpecialRefs(SmallVectorImpl<ValueInfo> &Refs, unsigned ROCnt,
75967548
unsigned WOCnt) {
75977549
// Readonly and writeonly refs are in the end of the refs list.
@@ -8058,11 +8010,6 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) {
80588010
break;
80598011
}
80608012

8061-
case bitc::FS_CONTEXT_RADIX_TREE_ARRAY: { // [n x entry]
8062-
RadixArray = ArrayRef<uint64_t>(Record);
8063-
break;
8064-
}
8065-
80668013
case bitc::FS_PERMODULE_CALLSITE_INFO: {
80678014
unsigned ValueID = Record[0];
80688015
SmallVector<unsigned> StackIdList;
@@ -8118,7 +8065,14 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) {
81188065
(Version < 10 && I < Record.size())) {
81198066
assert(Record.size() - I >= 2);
81208067
AllocationType AllocType = (AllocationType)Record[I++];
8121-
auto StackIdList = parseAllocInfoContext(Record, I);
8068+
unsigned NumStackEntries = Record[I++];
8069+
assert(Record.size() - I >= NumStackEntries);
8070+
SmallVector<unsigned> StackIdList;
8071+
for (unsigned J = 0; J < NumStackEntries; J++) {
8072+
assert(Record[I] < StackIds.size());
8073+
StackIdList.push_back(
8074+
TheIndex.addOrGetStackIdIndex(StackIds[Record[I++]]));
8075+
}
81228076
MIBs.push_back(MIBInfo(AllocType, std::move(StackIdList)));
81238077
}
81248078
// We either have nothing left or at least NumMIBs context size info
@@ -8169,7 +8123,14 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) {
81698123
while (MIBsRead++ < NumMIBs) {
81708124
assert(Record.size() - I >= 2);
81718125
AllocationType AllocType = (AllocationType)Record[I++];
8172-
auto StackIdList = parseAllocInfoContext(Record, I);
8126+
unsigned NumStackEntries = Record[I++];
8127+
assert(Record.size() - I >= NumStackEntries);
8128+
SmallVector<unsigned> StackIdList;
8129+
for (unsigned J = 0; J < NumStackEntries; J++) {
8130+
assert(Record[I] < StackIds.size());
8131+
StackIdList.push_back(
8132+
TheIndex.addOrGetStackIdIndex(StackIds[Record[I++]]));
8133+
}
81738134
MIBs.push_back(MIBInfo(AllocType, std::move(StackIdList)));
81748135
}
81758136
assert(Record.size() - I >= NumVersions);

0 commit comments

Comments
 (0)