[llvm] d6f906e - [SlotIndexes] Use simple_ilist instead of ilist. NFC. (#96747)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 26 04:59:01 PDT 2024
Author: Jay Foad
Date: 2024-06-26T12:58:59+01:00
New Revision: d6f906eadbf7a5c2eb484f62740bf3e6a650bc92
URL: https://github.com/llvm/llvm-project/commit/d6f906eadbf7a5c2eb484f62740bf3e6a650bc92
DIFF: https://github.com/llvm/llvm-project/commit/d6f906eadbf7a5c2eb484f62740bf3e6a650bc92.diff
LOG: [SlotIndexes] Use simple_ilist instead of ilist. NFC. (#96747)
simple_ilist does not take ownership of its nodes, which is fine for
SlotIndexes because the IndexListEntry nodes are allocated with a
BumpPtrAllocator and do not need to be freed.
Added:
Modified:
llvm/include/llvm/CodeGen/SlotIndexes.h
llvm/lib/CodeGen/SlotIndexes.cpp
llvm/unittests/CodeGen/MLRegAllocDevelopmentFeatures.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/CodeGen/SlotIndexes.h b/llvm/include/llvm/CodeGen/SlotIndexes.h
index 72f4a6876b6cb..21a9df22c2e1c 100644
--- a/llvm/include/llvm/CodeGen/SlotIndexes.h
+++ b/llvm/include/llvm/CodeGen/SlotIndexes.h
@@ -22,7 +22,7 @@
#include "llvm/ADT/IntervalMap.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/ilist.h"
+#include "llvm/ADT/simple_ilist.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
@@ -60,10 +60,6 @@ class raw_ostream;
}
};
- template <>
- struct ilist_alloc_traits<IndexListEntry>
- : public ilist_noalloc_traits<IndexListEntry> {};
-
/// SlotIndex - An opaque wrapper around machine indexes.
class SlotIndex {
friend class SlotIndexes;
@@ -302,7 +298,7 @@ class raw_ostream;
// IndexListEntry allocator.
BumpPtrAllocator ileAllocator;
- using IndexList = ilist<IndexListEntry>;
+ using IndexList = simple_ilist<IndexListEntry>;
IndexList indexList;
MachineFunction *mf = nullptr;
@@ -549,7 +545,7 @@ class raw_ostream;
// Insert a new list entry for MI.
IndexList::iterator newItr =
- indexList.insert(nextItr, createEntry(&MI, newNumber));
+ indexList.insert(nextItr, *createEntry(&MI, newNumber));
// Renumber locally if we need to.
if (dist == 0)
@@ -608,7 +604,7 @@ class raw_ostream;
mbb->empty() ? endEntry
: getInstructionIndex(mbb->front()).listEntry();
IndexList::iterator newItr =
- indexList.insert(insEntry->getIterator(), startEntry);
+ indexList.insert(insEntry->getIterator(), *startEntry);
SlotIndex startIdx(startEntry, SlotIndex::Slot_Block);
SlotIndex endIdx(endEntry, SlotIndex::Slot_Block);
diff --git a/llvm/lib/CodeGen/SlotIndexes.cpp b/llvm/lib/CodeGen/SlotIndexes.cpp
index 8b80c6ccb4389..a038b09c765c0 100644
--- a/llvm/lib/CodeGen/SlotIndexes.cpp
+++ b/llvm/lib/CodeGen/SlotIndexes.cpp
@@ -26,7 +26,7 @@ SlotIndexes::SlotIndexes() : MachineFunctionPass(ID) {
SlotIndexes::~SlotIndexes() {
// The indexList's nodes are all allocated in the BumpPtrAllocator.
- indexList.clearAndLeakNodesUnsafely();
+ indexList.clear();
}
INITIALIZE_PASS(SlotIndexes, DEBUG_TYPE,
@@ -75,7 +75,7 @@ bool SlotIndexes::runOnMachineFunction(MachineFunction &fn) {
MBBRanges.resize(mf->getNumBlockIDs());
idx2MBBMap.reserve(mf->size());
- indexList.push_back(createEntry(nullptr, index));
+ indexList.push_back(*createEntry(nullptr, index));
// Iterate over the function.
for (MachineBasicBlock &MBB : *mf) {
@@ -87,7 +87,7 @@ bool SlotIndexes::runOnMachineFunction(MachineFunction &fn) {
continue;
// Insert a store index for the instr.
- indexList.push_back(createEntry(&MI, index += SlotIndex::InstrDist));
+ indexList.push_back(*createEntry(&MI, index += SlotIndex::InstrDist));
// Save this base index in the maps.
mi2iMap.insert(std::make_pair(
@@ -95,7 +95,7 @@ bool SlotIndexes::runOnMachineFunction(MachineFunction &fn) {
}
// We insert one blank instructions between basic blocks.
- indexList.push_back(createEntry(nullptr, index += SlotIndex::InstrDist));
+ indexList.push_back(*createEntry(nullptr, index += SlotIndex::InstrDist));
MBBRanges[MBB.getNumber()].first = blockStartIndex;
MBBRanges[MBB.getNumber()].second = SlotIndex(&indexList.back(),
diff --git a/llvm/unittests/CodeGen/MLRegAllocDevelopmentFeatures.cpp b/llvm/unittests/CodeGen/MLRegAllocDevelopmentFeatures.cpp
index bc2d8729474d7..6c863046e159e 100644
--- a/llvm/unittests/CodeGen/MLRegAllocDevelopmentFeatures.cpp
+++ b/llvm/unittests/CodeGen/MLRegAllocDevelopmentFeatures.cpp
@@ -46,7 +46,7 @@ class RegAllocDevelopmentFeaturesTest : public ::Test {
protected:
SmallVector<LRStartEndInfo>
setupOverlapProblem(const SmallVectorImpl<LRPosInfoIndexes> &Segments,
- ilist<IndexListEntry> &IndexList) {
+ simple_ilist<IndexListEntry> &IndexList) {
SmallVector<LRStartEndInfo> PositionsToReturn;
PositionsToReturn.reserve(Segments.size());
for (auto CurrentPosIndexInfo : Segments) {
@@ -61,7 +61,7 @@ class RegAllocDevelopmentFeaturesTest : public ::Test {
Allocator.Allocate(sizeof(IndexListEntry), alignof(IndexListEntry)));
auto *CurrentListEntry =
new (CurrentLEMem) IndexListEntry(nullptr, CurrentIndex);
- IndexList.push_back(CurrentListEntry);
+ IndexList.push_back(*CurrentListEntry);
for (size_t CurrentPosInfoIndex = 0;
CurrentPosInfoIndex < Segments.size(); ++CurrentPosInfoIndex) {
if ((CurrentIndex / SlotIndex::InstrDist) ==
@@ -107,7 +107,7 @@ class RegAllocDevelopmentFeaturesTest : public ::Test {
}
void runOverlapTest(SmallVectorImpl<LRPosInfoIndexes> &OverlapSetup) {
- ilist<IndexListEntry> IndexList;
+ simple_ilist<IndexListEntry> IndexList;
auto OverlapProblem = setupOverlapProblem(OverlapSetup, IndexList);
NoInferenceModelRunner ModelRunner = setupModelRunner();
size_t MaxIndex = 0;
@@ -131,7 +131,7 @@ class RegAllocDevelopmentFeaturesTest : public ::Test {
NumberOfInterferences * ModelMaxSupportedInstructionCount);
ASSERT_THAT(MappingMatrix,
ContainerEq(getExpectedMappingMatrix(OverlapSetup)));
- IndexList.clearAndLeakNodesUnsafely();
+ IndexList.clear();
}
BumpPtrAllocator Allocator;
@@ -144,7 +144,7 @@ TEST_F(RegAllocDevelopmentFeaturesTest,
SmallVector<LRPosInfoIndexes, 2> OverlapSetup;
OverlapSetup.push_back({0, 5, 0});
OverlapSetup.push_back({5, 10, 0});
- ilist<IndexListEntry> IndexList;
+ simple_ilist<IndexListEntry> IndexList;
auto OverlapProblem = setupOverlapProblem(OverlapSetup, IndexList);
ASSERT_EQ(OverlapProblem[0].End.distance(OverlapProblem[1].End),
5 * SlotIndex::InstrDist);
@@ -154,7 +154,7 @@ TEST_F(RegAllocDevelopmentFeaturesTest,
TEST_F(RegAllocDevelopmentFeaturesTest, MetaSlotIndicesAreValid) {
SmallVector<LRPosInfoIndexes, 1> OverlapSetup;
OverlapSetup.push_back({0, 10, 0});
- ilist<IndexListEntry> IndexList;
+ simple_ilist<IndexListEntry> IndexList;
auto OverlapProblem = setupOverlapProblem(OverlapSetup, IndexList);
ASSERT_TRUE(OverlapProblem[0].Begin.isValid());
ASSERT_TRUE(OverlapProblem[0].End.isValid());
@@ -165,7 +165,7 @@ TEST_F(RegAllocDevelopmentFeaturesTest, MetaSlotIndicesAreValid) {
TEST_F(RegAllocDevelopmentFeaturesTest, InstructionOpcodesAreCorrect) {
SmallVector<LRPosInfoIndexes, 1> OverlapSetup;
OverlapSetup.push_back({0, ModelMaxSupportedInstructionCount - 1, 0});
- ilist<IndexListEntry> IndexList;
+ simple_ilist<IndexListEntry> IndexList;
auto OverlapProblem = setupOverlapProblem(OverlapSetup, IndexList);
NoInferenceModelRunner ModelRunner = setupModelRunner();
SlotIndex LastIndex = OverlapProblem[0].End;
@@ -247,7 +247,7 @@ TEST_F(RegAllocDevelopmentFeaturesTest, SingleMBBTest) {
TEST_F(RegAllocDevelopmentFeaturesTest, MBBFullTruncated) {
SmallVector<LRPosInfoIndexes, 1> OverlapSetup;
OverlapSetup.push_back({0, ModelMaxSupportedInstructionCount - 1, 0});
- ilist<IndexListEntry> IndexList;
+ simple_ilist<IndexListEntry> IndexList;
auto OverlapProblem = setupOverlapProblem(OverlapSetup, IndexList);
NoInferenceModelRunner ModelRunner = setupModelRunner();
SlotIndex LastIndex = OverlapProblem[0].End;
More information about the llvm-commits
mailing list