[llvm] d42b392 - [VectorUtils] Use SmallPtrSet::remove_if() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 26 05:55:13 PDT 2024
Author: Nikita Popov
Date: 2024-06-26T14:55:06+02:00
New Revision: d42b392696fbd9d612ac22ff82b4a1760fc26d89
URL: https://github.com/llvm/llvm-project/commit/d42b392696fbd9d612ac22ff82b4a1760fc26d89
DIFF: https://github.com/llvm/llvm-project/commit/d42b392696fbd9d612ac22ff82b4a1760fc26d89.diff
LOG: [VectorUtils] Use SmallPtrSet::remove_if() (NFC)
Added:
Modified:
llvm/include/llvm/Analysis/VectorUtils.h
llvm/lib/Analysis/VectorUtils.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/VectorUtils.h b/llvm/include/llvm/Analysis/VectorUtils.h
index 1458084da4b63..132571c694d4e 100644
--- a/llvm/include/llvm/Analysis/VectorUtils.h
+++ b/llvm/include/llvm/Analysis/VectorUtils.h
@@ -722,11 +722,17 @@ class InterleavedAccessInfo {
/// Release the group and remove all the relationships.
void releaseGroup(InterleaveGroup<Instruction> *Group) {
+ InterleaveGroups.erase(Group);
+ releaseGroupWithoutRemovingFromSet(Group);
+ }
+
+ /// Do everything necessary to release the group, apart from removing it from
+ /// the InterleaveGroups set.
+ void releaseGroupWithoutRemovingFromSet(InterleaveGroup<Instruction> *Group) {
for (unsigned i = 0; i < Group->getFactor(); i++)
if (Instruction *Member = Group->getMember(i))
InterleaveGroupMap.erase(Member);
- InterleaveGroups.erase(Group);
delete Group;
}
diff --git a/llvm/lib/Analysis/VectorUtils.cpp b/llvm/lib/Analysis/VectorUtils.cpp
index a83ce463e0a95..5f6758d16377e 100644
--- a/llvm/lib/Analysis/VectorUtils.cpp
+++ b/llvm/lib/Analysis/VectorUtils.cpp
@@ -1481,20 +1481,19 @@ void InterleavedAccessInfo::invalidateGroupsRequiringScalarEpilogue() {
if (!requiresScalarEpilogue())
return;
- bool ReleasedGroup = false;
// Release groups requiring scalar epilogues. Note that this also removes them
// from InterleaveGroups.
- for (auto *Group : make_early_inc_range(InterleaveGroups)) {
+ bool ReleasedGroup = InterleaveGroups.remove_if([&](auto *Group) {
if (!Group->requiresScalarEpilogue())
- continue;
+ return false;
LLVM_DEBUG(
dbgs()
<< "LV: Invalidate candidate interleaved group due to gaps that "
"require a scalar epilogue (not allowed under optsize) and cannot "
"be masked (not enabled). \n");
- releaseGroup(Group);
- ReleasedGroup = true;
- }
+ releaseGroupWithoutRemovingFromSet(Group);
+ return true;
+ });
assert(ReleasedGroup && "At least one group must be invalidated, as a "
"scalar epilogue was required");
(void)ReleasedGroup;
More information about the llvm-commits
mailing list