Skip to content

Commit a38f2f6

Browse files
authored
Merge pull request #76863 from atrick/fix-predmemopt
[NFC] Fix a future PredictableMemOpt bug introduced by the previous c…
2 parents fef61ea + 415d7ab commit a38f2f6

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/SILOptimizer/Mandatory/PredictableMemOpt.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,7 +2278,7 @@ class PromotableInstructions {
22782278
SmallVectorImpl<AvailableValue> &allAvailableValues;
22792279

22802280
SmallVector<SILInstruction *> promotableInsts;
2281-
SmallVector<unsigned, 8> availableValueStartOffsets;
2281+
SmallVector<std::pair<unsigned, unsigned>, 8> availableValueOffsets;
22822282

22832283
public:
22842284
PromotableInstructions(SmallVectorImpl<AvailableValue> &allAvailableValues)
@@ -2296,9 +2296,12 @@ class PromotableInstructions {
22962296
initializeAvailableValues(SILInstruction *instruction,
22972297
SmallVectorImpl<AvailableValue> &&availableValues) {
22982298

2299-
unsigned nextInstIdx = availableValueStartOffsets.size();
2299+
unsigned nextInstIdx = availableValueOffsets.size();
23002300
assert(instruction == promotableInsts[nextInstIdx]);
2301-
availableValueStartOffsets.push_back(allAvailableValues.size());
2301+
2302+
unsigned startOffset = allAvailableValues.size();
2303+
unsigned endOffset = startOffset + availableValues.size();
2304+
availableValueOffsets.push_back({startOffset, endOffset});
23022305
std::move(availableValues.begin(), availableValues.end(),
23032306
std::back_inserter(allAvailableValues));
23042307
return nextInstIdx;
@@ -2311,11 +2314,8 @@ class PromotableInstructions {
23112314
}
23122315

23132316
MutableArrayRef<AvailableValue> mutableAvailableValues(unsigned index) {
2314-
unsigned startOffset = availableValueStartOffsets[index];
2315-
unsigned endOffset = allAvailableValues.size();
2316-
if (index + 1 < size()) {
2317-
endOffset = availableValueStartOffsets[index + 1];
2318-
}
2317+
unsigned startOffset, endOffset;
2318+
std::tie(startOffset, endOffset) = availableValueOffsets[index];
23192319
return {allAvailableValues.begin() + startOffset,
23202320
allAvailableValues.begin() + endOffset};
23212321
}

0 commit comments

Comments
 (0)