[llvm] 62397f8 - Iterate DenseMaps with auto and structured bindings. NFC (#221869)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 7 21:09:38 PDT 2026
Author: Fangrui Song
Date: 2026-09-08T04:09:29Z
New Revision: 62397f8b3c3986f54187ce08f00b3448ea1f8880
URL: https://github.com/llvm/llvm-project/commit/62397f8b3c3986f54187ce08f00b3448ea1f8880
DIFF: https://github.com/llvm/llvm-project/commit/62397f8b3c3986f54187ce08f00b3448ea1f8880.diff
LOG: Iterate DenseMaps with auto and structured bindings. NFC (#221869)
Avoid naming `std::pair` directly. The DenseMap bucket is subject to
change (#221853).
Added:
Modified:
clang/lib/Sema/SemaAttr.cpp
llvm/lib/Bitcode/Reader/MetadataLoader.cpp
llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
llvm/lib/CodeGen/RegisterUsageInfo.cpp
llvm/lib/CodeGen/StackColoring.cpp
llvm/lib/MC/StringTableBuilder.cpp
llvm/lib/MCA/HardwareUnits/LSUnit.cpp
llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
llvm/lib/Transforms/IPO/SampleProfile.cpp
llvm/lib/Transforms/Scalar/GVNHoist.cpp
llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
llvm/lib/Transforms/Utils/Local.cpp
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
mlir/lib/IR/PDL/PDLPatternMatch.cpp
Removed:
################################################################################
diff --git a/clang/lib/Sema/SemaAttr.cpp b/clang/lib/Sema/SemaAttr.cpp
index 67573c9f1c72a..35d14a4444595 100644
--- a/clang/lib/Sema/SemaAttr.cpp
+++ b/clang/lib/Sema/SemaAttr.cpp
@@ -1074,7 +1074,7 @@ void Sema::ActOnPragmaAttributeAttribute(
// variable(is_parameter).
// - a sub-rule and a sibling that's negated. E.g.
// variable(is_thread_local) and variable(unless(is_parameter))
- llvm::SmallDenseMap<int, std::pair<int, SourceRange>, 2>
+ llvm::SmallDenseMap<int, attr::ParsedSubjectMatchRuleSet::value_type, 2>
RulesToFirstSpecifiedNegatedSubRule;
for (const auto &Rule : Rules) {
attr::SubjectMatchRule MatchRule = attr::SubjectMatchRule(Rule.first);
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index f4ebfce24b016..6f1fbd627edbc 100644
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -241,8 +241,8 @@ void BitcodeReaderMetadataList::tryToResolveCycles() {
return;
// Give up on finding a full definition for any forward decls that remain.
- for (const auto &Ref : OldTypeRefs.FwdDecls)
- OldTypeRefs.Final.insert(Ref);
+ for (const auto &[UUID, CT] : OldTypeRefs.FwdDecls)
+ OldTypeRefs.Final.try_emplace(UUID, CT);
OldTypeRefs.FwdDecls.clear();
// Upgrade from old type ref arrays. In strange cases, this could add to
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
index 859e073b91cc5..e33b6e0050318 100644
--- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -579,12 +579,12 @@ class IndexBitcodeWriter : public BitcodeWriterBase {
void forEachSummary(Functor Callback) {
if (ModuleToSummariesForIndex) {
for (auto &M : *ModuleToSummariesForIndex)
- for (auto &Summary : M.second) {
- Callback(Summary, false);
+ for (auto &[GUID, GVS] : M.second) {
+ Callback({GUID, GVS}, false);
// Ensure aliasee is handled, e.g. for assigning a valueId,
// even if we are not importing the aliasee directly (the
// imported alias will contain a copy of aliasee).
- if (auto *AS = dyn_cast<AliasSummary>(Summary.getSecond()))
+ if (auto *AS = dyn_cast<AliasSummary>(GVS))
Callback({AS->getAliaseeGUID(), &AS->getAliasee()}, true);
}
} else {
diff --git a/llvm/lib/CodeGen/RegisterUsageInfo.cpp b/llvm/lib/CodeGen/RegisterUsageInfo.cpp
index 38e4c30ceb634..d139bd430fb20 100644
--- a/llvm/lib/CodeGen/RegisterUsageInfo.cpp
+++ b/llvm/lib/CodeGen/RegisterUsageInfo.cpp
@@ -70,7 +70,7 @@ PhysicalRegisterUsageInfo::getRegUsageInfo(const Function &FP) {
}
void PhysicalRegisterUsageInfo::print(raw_ostream &OS, const Module *M) const {
- using FuncPtrRegMaskPair = std::pair<const Function *, std::vector<uint32_t>>;
+ using FuncPtrRegMaskPair = decltype(RegMasks)::value_type;
// Create a vector of pointer to RegMasks entries
SmallVector<const FuncPtrRegMaskPair *, 64> FPRMPairVector(
diff --git a/llvm/lib/CodeGen/StackColoring.cpp b/llvm/lib/CodeGen/StackColoring.cpp
index aa42c0ee28532..0e4c1526d0d0b 100644
--- a/llvm/lib/CodeGen/StackColoring.cpp
+++ b/llvm/lib/CodeGen/StackColoring.cpp
@@ -927,7 +927,7 @@ void StackColoring::remapInstructions(DenseMap<int, int> &SlotRemap) {
// Keep a list of allocas which has been affected by the remap.
SmallPtrSet<const AllocaInst*, 32> MergedAllocas;
- for (const std::pair<int, int> &SI : SlotRemap) {
+ for (const auto &SI : SlotRemap) {
const AllocaInst *From = MFI->getObjectAllocation(SI.first);
const AllocaInst *To = MFI->getObjectAllocation(SI.second);
assert(To && From && "Invalid allocation object");
diff --git a/llvm/lib/MC/StringTableBuilder.cpp b/llvm/lib/MC/StringTableBuilder.cpp
index eb1a62f1f6412..39d10ad128ed7 100644
--- a/llvm/lib/MC/StringTableBuilder.cpp
+++ b/llvm/lib/MC/StringTableBuilder.cpp
@@ -66,7 +66,7 @@ void StringTableBuilder::write(raw_ostream &OS) const {
OS << Data;
}
-using StringPair = std::pair<CachedHashStringRef, size_t>;
+using StringPair = DenseMap<CachedHashStringRef, size_t>::value_type;
void StringTableBuilder::write(uint8_t *Buf) const {
assert(isFinalized());
diff --git a/llvm/lib/MCA/HardwareUnits/LSUnit.cpp b/llvm/lib/MCA/HardwareUnits/LSUnit.cpp
index bf0b432524881..f88f82a7f5279 100644
--- a/llvm/lib/MCA/HardwareUnits/LSUnit.cpp
+++ b/llvm/lib/MCA/HardwareUnits/LSUnit.cpp
@@ -42,7 +42,7 @@ LSUnitBase::LSUnitBase(const MCSchedModel &SM, unsigned LQ, unsigned SQ,
LSUnitBase::~LSUnitBase() = default;
void LSUnit::cycleEvent() {
- for (const std::pair<unsigned, std::unique_ptr<MemoryGroup>> &G : Groups)
+ for (const auto &G : Groups)
G.second->cycleEvent();
}
diff --git a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
index cdf3439e07d61..12d062ab6ff9f 100644
--- a/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
+++ b/llvm/lib/MCA/HardwareUnits/ResourceManager.cpp
@@ -473,7 +473,7 @@ void ResourceManager::fastIssueInstruction(
}
void ResourceManager::cycleEvent(SmallVectorImpl<ResourceRef> &ResourcesFreed) {
- for (std::pair<ResourceRef, unsigned> &BR : BusyResources) {
+ for (auto &BR : BusyResources) {
if (BR.second)
BR.second--;
if (!BR.second) {
diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp
index cb11372183bc8..cd9549cd2f0cc 100644
--- a/llvm/lib/Transforms/IPO/SampleProfile.cpp
+++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp
@@ -2205,9 +2205,8 @@ bool SampleProfileLoader::runOnModule(Module &M, ModuleAnalysisManager &AM,
// Account for cold calls not inlined....
if (!FunctionSamples::ProfileIsCS)
- for (const std::pair<Function *, NotInlinedProfileInfo> &pair :
- notInlinedCallInfo)
- updateProfileCallee(pair.first, pair.second.entryCount);
+ for (const auto &[Fn, Info] : notInlinedCallInfo)
+ updateProfileCallee(Fn, Info.entryCount);
if (RemoveProbeAfterProfileAnnotation &&
FunctionSamples::ProfileIsProbeBased) {
diff --git a/llvm/lib/Transforms/Scalar/GVNHoist.cpp b/llvm/lib/Transforms/Scalar/GVNHoist.cpp
index 37562a024a2b0..6bb6d6772fbfb 100644
--- a/llvm/lib/Transforms/Scalar/GVNHoist.cpp
+++ b/llvm/lib/Transforms/Scalar/GVNHoist.cpp
@@ -835,7 +835,7 @@ void GVNHoist::findHoistableCandidates(OutValuesType &CHIBBs,
// CHIArgs now have the outgoing values, so check for anticipability and
// accumulate hoistable candidates in HPL.
- for (std::pair<BasicBlock *, SmallVector<CHIArg, 2>> &A : CHIBBs) {
+ for (auto &A : CHIBBs) {
BasicBlock *BB = A.first;
SmallVectorImpl<CHIArg> &CHIs = A.second;
// Vector of PHIs contains PHIs for
diff erent instructions.
diff --git a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
index 9707eee005c56..9b9889b911eee 100644
--- a/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
+++ b/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp
@@ -1135,9 +1135,8 @@ void StructurizeCFG::setPrevNode(BasicBlock *BB) {
/// Does BB dominate all the predicates of Node?
bool StructurizeCFG::dominatesPredicates(BasicBlock *BB, RegionNode *Node) {
BBPredicates &Preds = Predicates[Node->getEntry()];
- return llvm::all_of(Preds, [&](std::pair<BasicBlock *, PredInfo> Pred) {
- return DT->dominates(BB, Pred.first);
- });
+ return llvm::all_of(
+ Preds, [&](const auto &Pred) { return DT->dominates(BB, Pred.first); });
}
/// Can we predict that this node will always be called?
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
index b88e506ae681a..f08f1e4868091 100644
--- a/llvm/lib/Transforms/Utils/Local.cpp
+++ b/llvm/lib/Transforms/Utils/Local.cpp
@@ -2852,7 +2852,7 @@ static bool markAliveBlocks(Function &F, SmallVectorImpl<bool> &Reachable,
}
if (DTU) {
std::vector<DominatorTree::UpdateType> Updates;
- for (const std::pair<BasicBlock *, int> &I : NumPerSuccessorCases)
+ for (const auto &I : NumPerSuccessorCases)
if (I.second == 0)
Updates.push_back({DominatorTree::Delete, BB, I.first});
DTU->applyUpdates(Updates);
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index cc2c769b25ce9..ca96f2e70d810 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -1053,7 +1053,7 @@ bool SimplifyCFGOpt::simplifyEqualityComparisonWithOnlyPredecessor(
if (DTU) {
std::vector<DominatorTree::UpdateType> Updates;
- for (const std::pair<BasicBlock *, int> &I : NumPerSuccessorCases)
+ for (const auto &I : NumPerSuccessorCases)
if (I.second == 0)
Updates.push_back({DominatorTree::Delete, PredDef, I.first});
DTU->applyUpdates(Updates);
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 5de71f3bf87b5..323442be1c8a7 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -4480,9 +4480,7 @@ class slpvectorizer::BoUpSLP {
} while (It != P.first->Scalars.end());
}
return all_of(PotentiallyReorderedEntriesCount,
- [&](const std::pair<const TreeEntry *, unsigned> &P) {
- return P.second == NumOps - 1;
- });
+ [&](const auto &P) { return P.second == NumOps - 1; });
}
SmallVector<ScheduleCopyableData *>
@@ -11634,9 +11632,7 @@ class InstructionsCompatibilityAnalysis {
++Counters[V];
}
if (Counters.size() == 2 &&
- any_of(Counters, [&](const std::pair<const Value *, unsigned> &C) {
- return C.second == 1;
- }))
+ any_of(Counters, [&](const auto &C) { return C.second == 1; }))
return true;
}
// First operand not a constant or splat? Last attempt - check for
diff --git a/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp b/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
index 370457c85e797..796083062ac72 100644
--- a/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
+++ b/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
@@ -760,9 +760,8 @@ ParallelToGpuLaunchLowering::matchAndRewrite(ParallelOp parallelOp,
// Now that we succeeded creating the launch operation, also update the
// bounds.
- for (auto bound : launchBounds)
- launchOp.setOperand(getLaunchOpArgumentNum(std::get<0>(bound)),
- std::get<1>(bound));
+ for (const auto &[processor, bound] : launchBounds)
+ launchOp.setOperand(getLaunchOpArgumentNum(processor), bound);
rewriter.eraseOp(parallelOp);
return success();
diff --git a/mlir/lib/IR/PDL/PDLPatternMatch.cpp b/mlir/lib/IR/PDL/PDLPatternMatch.cpp
index 62a71aa2c1daa..ceaced2610b6e 100644
--- a/mlir/lib/IR/PDL/PDLPatternMatch.cpp
+++ b/mlir/lib/IR/PDL/PDLPatternMatch.cpp
@@ -82,8 +82,7 @@ void PDLPatternModule::mergeIn(PDLPatternModule &&other) {
registerRewriteFunction(it.first(), std::move(it.second));
for (auto &it : other.configs)
configs.emplace_back(std::move(it));
- for (auto &it : other.configMap)
- configMap.insert(it);
+ configMap.insert_range(other.configMap);
// Steal the other state if we have no patterns.
if (!pdlModule) {
More information about the llvm-commits
mailing list