Skip to content

[llvm] Use *Set::insert_range (NFC) #133041

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

kazutakahirata
Copy link
Contributor

We can use *Set::insert_range to collapse:

for (auto Elem : Range)
Set.insert(E);

down to:

Set.insert_range(Range);

In some cases, we can further fold that into the set declaration.

We can use *Set::insert_range to collapse:

  for (auto Elem : Range)
    Set.insert(E);

down to:

  Set.insert_range(Range);

In some cases, we can further fold that into the set declaration.
@kazutakahirata kazutakahirata requested a review from kuhar March 26, 2025 06:37
@llvmbot llvmbot added LTO Link time optimization (regular/full LTO or ThinLTO) llvm:ir testing-tools llvm:transforms labels Mar 26, 2025
@llvmbot
Copy link
Member

llvmbot commented Mar 26, 2025

@llvm/pr-subscribers-testing-tools
@llvm/pr-subscribers-llvm-ir

@llvm/pr-subscribers-lto

Author: Kazu Hirata (kazutakahirata)

Changes

We can use *Set::insert_range to collapse:

for (auto Elem : Range)
Set.insert(E);

down to:

Set.insert_range(Range);

In some cases, we can further fold that into the set declaration.


Full diff: https://github.com/llvm/llvm-project/pull/133041.diff

12 Files Affected:

  • (modified) llvm/include/llvm/Transforms/IPO/Attributor.h (+1-2)
  • (modified) llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h (+1-2)
  • (modified) llvm/lib/ExecutionEngine/MCJIT/MCJIT.h (+1-2)
  • (modified) llvm/lib/ExecutionEngine/Orc/Core.cpp (+3-6)
  • (modified) llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp (+3-6)
  • (modified) llvm/lib/FileCheck/FileCheck.cpp (+4-8)
  • (modified) llvm/lib/IR/Assumptions.cpp (+1-2)
  • (modified) llvm/lib/LTO/LTOCodeGenerator.cpp (+1-2)
  • (modified) llvm/lib/LTO/ThinLTOCodeGenerator.cpp (+1-2)
  • (modified) llvm/tools/bugpoint/CrashDebugger.cpp (+3-6)
  • (modified) llvm/tools/llvm-reduce/ReducerWorkItem.cpp (+2-4)
  • (modified) llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp (+1-2)
diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h
index 05951f87b5062..c2db8e32e7432 100644
--- a/llvm/include/llvm/Transforms/IPO/Attributor.h
+++ b/llvm/include/llvm/Transforms/IPO/Attributor.h
@@ -5103,8 +5103,7 @@ template <typename MemberTy> struct PotentialValuesState : AbstractState {
       indicatePessimisticFixpoint();
       return;
     }
-    for (const MemberTy &C : R.Set)
-      Set.insert(C);
+    Set.insert_range(R.Set);
     UndefIsContained |= R.undefIsContained();
     checkAndInvalidate();
   }
diff --git a/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h b/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
index cc9d717054528..1b6309c7fb1a4 100644
--- a/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
+++ b/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
@@ -57,8 +57,7 @@ class LockstepReverseIterator
     Fail = false;
     if constexpr (!EarlyFailure) {
       this->ActiveBlocks.clear();
-      for (BasicBlock *BB : Blocks)
-        this->ActiveBlocks.insert(BB);
+      this->ActiveBlocks.insert_range(Blocks);
     }
     Insts.clear();
     for (BasicBlock *BB : Blocks) {
diff --git a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
index f6c4cdbb8c91a..fbe64fabd3240 100644
--- a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
+++ b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
@@ -150,8 +150,7 @@ class MCJIT : public ExecutionEngine {
     }
 
     void markAllLoadedModulesAsFinalized() {
-      for (Module *M : LoadedModules)
-        FinalizedModules.insert(M);
+      FinalizedModules.insert_range(LoadedModules);
       LoadedModules.clear();
     }
 
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index 9f466e725668a..d6673552e39fd 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -1261,8 +1261,7 @@ JITDylib::RemoveTrackerResult JITDylib::IL_removeTracker(ResourceTracker &RT) {
   if (&RT == DefaultTracker.get()) {
     SymbolNameSet TrackedSymbols;
     for (auto &KV : TrackerSymbols)
-      for (auto &Sym : KV.second)
-        TrackedSymbols.insert(Sym);
+      TrackedSymbols.insert_range(KV.second);
 
     for (auto &KV : Symbols) {
       auto &Sym = KV.first;
@@ -1346,8 +1345,7 @@ void JITDylib::transferTracker(ResourceTracker &DstRT, ResourceTracker &SrcRT) {
       if (DstMRs.empty())
         DstMRs = std::move(SrcMRs);
       else
-        for (auto *MR : SrcMRs)
-          DstMRs.insert(MR);
+        DstMRs.insert_range(SrcMRs);
       // Erase SrcRT entry in TrackerMRs. Use &SrcRT key rather than iterator I
       // for this, since I may have been invalidated by 'TrackerMRs[&DstRT]'.
       TrackerMRs.erase(&SrcRT);
@@ -1371,8 +1369,7 @@ void JITDylib::transferTracker(ResourceTracker &DstRT, ResourceTracker &SrcRT) {
 
     SymbolNameSet CurrentlyTrackedSymbols;
     for (auto &KV : TrackerSymbols)
-      for (auto &Sym : KV.second)
-        CurrentlyTrackedSymbols.insert(Sym);
+      CurrentlyTrackedSymbols.insert_range(KV.second);
 
     for (auto &KV : Symbols) {
       auto &Sym = KV.first;
diff --git a/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
index 1bb444077ad15..941a9bdae7059 100644
--- a/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
@@ -396,16 +396,13 @@ class LinkGraphLinkingLayer::JITLinkCtx final : public JITLinkContext {
 
         for (auto *FB : BI.AnonEdges) {
           auto &FBI = BlockInfos[FB];
-          for (auto *BB : BI.AnonBackEdges)
-            FBI.AnonBackEdges.insert(BB);
+          FBI.AnonBackEdges.insert_range(BI.AnonBackEdges);
         }
 
         for (auto *BB : BI.AnonBackEdges) {
           auto &BBI = BlockInfos[BB];
-          for (auto *SD : BI.SymbolDeps)
-            BBI.SymbolDeps.insert(SD);
-          for (auto *FB : BI.AnonEdges)
-            BBI.AnonEdges.insert(FB);
+          BBI.SymbolDeps.insert_range(BI.SymbolDeps);
+          BBI.AnonEdges.insert_range(BI.AnonEdges);
         }
       }
 
diff --git a/llvm/lib/FileCheck/FileCheck.cpp b/llvm/lib/FileCheck/FileCheck.cpp
index 072dbefba1f1f..10ca5f4d122bc 100644
--- a/llvm/lib/FileCheck/FileCheck.cpp
+++ b/llvm/lib/FileCheck/FileCheck.cpp
@@ -2491,14 +2491,10 @@ static bool ValidatePrefixes(StringRef Kind, StringSet<> &UniquePrefixes,
 bool FileCheck::ValidateCheckPrefixes() {
   StringSet<> UniquePrefixes;
   // Add default prefixes to catch user-supplied duplicates of them below.
-  if (Req.CheckPrefixes.empty()) {
-    for (const char *Prefix : DefaultCheckPrefixes)
-      UniquePrefixes.insert(Prefix);
-  }
-  if (Req.CommentPrefixes.empty()) {
-    for (const char *Prefix : DefaultCommentPrefixes)
-      UniquePrefixes.insert(Prefix);
-  }
+  if (Req.CheckPrefixes.empty())
+    UniquePrefixes.insert_range(DefaultCheckPrefixes);
+  if (Req.CommentPrefixes.empty())
+    UniquePrefixes.insert_range(DefaultCommentPrefixes);
   // Do not validate the default prefixes, or diagnostics about duplicates might
   // incorrectly indicate that they were supplied by the user.
   if (!ValidatePrefixes("check", UniquePrefixes, Req.CheckPrefixes))
diff --git a/llvm/lib/IR/Assumptions.cpp b/llvm/lib/IR/Assumptions.cpp
index ad874485fb3a0..6adbbc4a63b0a 100644
--- a/llvm/lib/IR/Assumptions.cpp
+++ b/llvm/lib/IR/Assumptions.cpp
@@ -42,8 +42,7 @@ DenseSet<StringRef> getAssumptions(const Attribute &A) {
   SmallVector<StringRef, 8> Strings;
   A.getValueAsString().split(Strings, ",");
 
-  for (StringRef Str : Strings)
-    Assumptions.insert(Str);
+  Assumptions.insert_range(Strings);
   return Assumptions;
 }
 
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 6b66a88880053..70b7135fcbef0 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -142,8 +142,7 @@ LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context)
 LTOCodeGenerator::~LTOCodeGenerator() = default;
 
 void LTOCodeGenerator::setAsmUndefinedRefs(LTOModule *Mod) {
-  for (const StringRef &Undef : Mod->getAsmUndefinedRefs())
-    AsmUndefinedRefs.insert(Undef);
+  AsmUndefinedRefs.insert_range(Mod->getAsmUndefinedRefs());
 }
 
 bool LTOCodeGenerator::addModule(LTOModule *Mod) {
diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
index 11e88ca4a83eb..9e7f8187fe49c 100644
--- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -1057,8 +1057,7 @@ void ThinLTOCodeGenerator::run() {
   std::map<ValueInfo, std::vector<VTableSlotSummary>> LocalWPDTargetsMap;
   std::set<GlobalValue::GUID> ExportedGUIDs;
   runWholeProgramDevirtOnIndex(*Index, ExportedGUIDs, LocalWPDTargetsMap);
-  for (auto GUID : ExportedGUIDs)
-    GUIDPreservedSymbols.insert(GUID);
+  GUIDPreservedSymbols.insert_range(ExportedGUIDs);
 
   // Compute prevailing symbols
   DenseMap<GlobalValue::GUID, const GlobalValueSummary *> PrevailingCopy;
diff --git a/llvm/tools/bugpoint/CrashDebugger.cpp b/llvm/tools/bugpoint/CrashDebugger.cpp
index 7dbbf73679584..2268aac351789 100644
--- a/llvm/tools/bugpoint/CrashDebugger.cpp
+++ b/llvm/tools/bugpoint/CrashDebugger.cpp
@@ -417,9 +417,8 @@ void simpleSimplifyCfg(Function &F, SmallVectorImpl<BasicBlock *> &BBs) {
   // undefined behavior into unreachables, but bugpoint was the thing that
   // generated the undefined behavior, and we don't want it to kill the entire
   // program.
-  SmallPtrSet<BasicBlock *, 16> Visited;
-  for (auto *BB : depth_first(&F.getEntryBlock()))
-    Visited.insert(BB);
+  SmallPtrSet<BasicBlock *, 16> Visited(llvm::from_range,
+                                        depth_first(&F.getEntryBlock()));
 
   SmallVector<BasicBlock *, 16> Unreachable;
   for (auto &BB : F)
@@ -917,9 +916,7 @@ bool ReduceCrashingNamedMD::TestNamedMDs(std::vector<std::string> &NamedMDs) {
   outs() << ": ";
 
   // Make a StringMap for faster lookup
-  StringSet<> Names;
-  for (const std::string &Name : NamedMDs)
-    Names.insert(Name);
+  StringSet<> Names(llvm::from_range, NamedMDs);
 
   // First collect all the metadata to delete in a vector, then
   // delete them all at once to avoid invalidating the iterator
diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
index 01fa2a33ec1f5..ad40d8d8baa36 100644
--- a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
+++ b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
@@ -343,11 +343,9 @@ static std::unique_ptr<MachineFunction> cloneMF(MachineFunction *SrcMF,
     }
   }
 
-  DenseSet<const uint32_t *> ConstRegisterMasks;
-
   // Track predefined/named regmasks which we ignore.
-  for (const uint32_t *Mask : TRI->getRegMasks())
-    ConstRegisterMasks.insert(Mask);
+  DenseSet<const uint32_t *> ConstRegisterMasks(llvm::from_range,
+                                                TRI->getRegMasks());
 
   // Clone instructions.
   for (auto &SrcMBB : *SrcMF) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp b/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
index f900d5cf8017c..953e0e51afd82 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
@@ -24,8 +24,7 @@ static void reduceMasksInFunction(Oracle &O, MachineFunction &MF) {
 
   // Track predefined/named regmasks which we ignore.
   const unsigned NumRegs = TRI->getNumRegs();
-  for (const uint32_t *Mask : TRI->getRegMasks())
-    ConstRegisterMasks.insert(Mask);
+  ConstRegisterMasks.insert_range(TRI->getRegMasks());
 
   for (MachineBasicBlock &MBB : MF) {
     for (MachineInstr &MI : MBB) {

@llvmbot
Copy link
Member

llvmbot commented Mar 26, 2025

@llvm/pr-subscribers-llvm-transforms

Author: Kazu Hirata (kazutakahirata)

Changes

We can use *Set::insert_range to collapse:

for (auto Elem : Range)
Set.insert(E);

down to:

Set.insert_range(Range);

In some cases, we can further fold that into the set declaration.


Full diff: https://github.com/llvm/llvm-project/pull/133041.diff

12 Files Affected:

  • (modified) llvm/include/llvm/Transforms/IPO/Attributor.h (+1-2)
  • (modified) llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h (+1-2)
  • (modified) llvm/lib/ExecutionEngine/MCJIT/MCJIT.h (+1-2)
  • (modified) llvm/lib/ExecutionEngine/Orc/Core.cpp (+3-6)
  • (modified) llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp (+3-6)
  • (modified) llvm/lib/FileCheck/FileCheck.cpp (+4-8)
  • (modified) llvm/lib/IR/Assumptions.cpp (+1-2)
  • (modified) llvm/lib/LTO/LTOCodeGenerator.cpp (+1-2)
  • (modified) llvm/lib/LTO/ThinLTOCodeGenerator.cpp (+1-2)
  • (modified) llvm/tools/bugpoint/CrashDebugger.cpp (+3-6)
  • (modified) llvm/tools/llvm-reduce/ReducerWorkItem.cpp (+2-4)
  • (modified) llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp (+1-2)
diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h
index 05951f87b5062..c2db8e32e7432 100644
--- a/llvm/include/llvm/Transforms/IPO/Attributor.h
+++ b/llvm/include/llvm/Transforms/IPO/Attributor.h
@@ -5103,8 +5103,7 @@ template <typename MemberTy> struct PotentialValuesState : AbstractState {
       indicatePessimisticFixpoint();
       return;
     }
-    for (const MemberTy &C : R.Set)
-      Set.insert(C);
+    Set.insert_range(R.Set);
     UndefIsContained |= R.undefIsContained();
     checkAndInvalidate();
   }
diff --git a/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h b/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
index cc9d717054528..1b6309c7fb1a4 100644
--- a/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
+++ b/llvm/include/llvm/Transforms/Utils/LockstepReverseIterator.h
@@ -57,8 +57,7 @@ class LockstepReverseIterator
     Fail = false;
     if constexpr (!EarlyFailure) {
       this->ActiveBlocks.clear();
-      for (BasicBlock *BB : Blocks)
-        this->ActiveBlocks.insert(BB);
+      this->ActiveBlocks.insert_range(Blocks);
     }
     Insts.clear();
     for (BasicBlock *BB : Blocks) {
diff --git a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
index f6c4cdbb8c91a..fbe64fabd3240 100644
--- a/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
+++ b/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h
@@ -150,8 +150,7 @@ class MCJIT : public ExecutionEngine {
     }
 
     void markAllLoadedModulesAsFinalized() {
-      for (Module *M : LoadedModules)
-        FinalizedModules.insert(M);
+      FinalizedModules.insert_range(LoadedModules);
       LoadedModules.clear();
     }
 
diff --git a/llvm/lib/ExecutionEngine/Orc/Core.cpp b/llvm/lib/ExecutionEngine/Orc/Core.cpp
index 9f466e725668a..d6673552e39fd 100644
--- a/llvm/lib/ExecutionEngine/Orc/Core.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Core.cpp
@@ -1261,8 +1261,7 @@ JITDylib::RemoveTrackerResult JITDylib::IL_removeTracker(ResourceTracker &RT) {
   if (&RT == DefaultTracker.get()) {
     SymbolNameSet TrackedSymbols;
     for (auto &KV : TrackerSymbols)
-      for (auto &Sym : KV.second)
-        TrackedSymbols.insert(Sym);
+      TrackedSymbols.insert_range(KV.second);
 
     for (auto &KV : Symbols) {
       auto &Sym = KV.first;
@@ -1346,8 +1345,7 @@ void JITDylib::transferTracker(ResourceTracker &DstRT, ResourceTracker &SrcRT) {
       if (DstMRs.empty())
         DstMRs = std::move(SrcMRs);
       else
-        for (auto *MR : SrcMRs)
-          DstMRs.insert(MR);
+        DstMRs.insert_range(SrcMRs);
       // Erase SrcRT entry in TrackerMRs. Use &SrcRT key rather than iterator I
       // for this, since I may have been invalidated by 'TrackerMRs[&DstRT]'.
       TrackerMRs.erase(&SrcRT);
@@ -1371,8 +1369,7 @@ void JITDylib::transferTracker(ResourceTracker &DstRT, ResourceTracker &SrcRT) {
 
     SymbolNameSet CurrentlyTrackedSymbols;
     for (auto &KV : TrackerSymbols)
-      for (auto &Sym : KV.second)
-        CurrentlyTrackedSymbols.insert(Sym);
+      CurrentlyTrackedSymbols.insert_range(KV.second);
 
     for (auto &KV : Symbols) {
       auto &Sym = KV.first;
diff --git a/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
index 1bb444077ad15..941a9bdae7059 100644
--- a/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/LinkGraphLinkingLayer.cpp
@@ -396,16 +396,13 @@ class LinkGraphLinkingLayer::JITLinkCtx final : public JITLinkContext {
 
         for (auto *FB : BI.AnonEdges) {
           auto &FBI = BlockInfos[FB];
-          for (auto *BB : BI.AnonBackEdges)
-            FBI.AnonBackEdges.insert(BB);
+          FBI.AnonBackEdges.insert_range(BI.AnonBackEdges);
         }
 
         for (auto *BB : BI.AnonBackEdges) {
           auto &BBI = BlockInfos[BB];
-          for (auto *SD : BI.SymbolDeps)
-            BBI.SymbolDeps.insert(SD);
-          for (auto *FB : BI.AnonEdges)
-            BBI.AnonEdges.insert(FB);
+          BBI.SymbolDeps.insert_range(BI.SymbolDeps);
+          BBI.AnonEdges.insert_range(BI.AnonEdges);
         }
       }
 
diff --git a/llvm/lib/FileCheck/FileCheck.cpp b/llvm/lib/FileCheck/FileCheck.cpp
index 072dbefba1f1f..10ca5f4d122bc 100644
--- a/llvm/lib/FileCheck/FileCheck.cpp
+++ b/llvm/lib/FileCheck/FileCheck.cpp
@@ -2491,14 +2491,10 @@ static bool ValidatePrefixes(StringRef Kind, StringSet<> &UniquePrefixes,
 bool FileCheck::ValidateCheckPrefixes() {
   StringSet<> UniquePrefixes;
   // Add default prefixes to catch user-supplied duplicates of them below.
-  if (Req.CheckPrefixes.empty()) {
-    for (const char *Prefix : DefaultCheckPrefixes)
-      UniquePrefixes.insert(Prefix);
-  }
-  if (Req.CommentPrefixes.empty()) {
-    for (const char *Prefix : DefaultCommentPrefixes)
-      UniquePrefixes.insert(Prefix);
-  }
+  if (Req.CheckPrefixes.empty())
+    UniquePrefixes.insert_range(DefaultCheckPrefixes);
+  if (Req.CommentPrefixes.empty())
+    UniquePrefixes.insert_range(DefaultCommentPrefixes);
   // Do not validate the default prefixes, or diagnostics about duplicates might
   // incorrectly indicate that they were supplied by the user.
   if (!ValidatePrefixes("check", UniquePrefixes, Req.CheckPrefixes))
diff --git a/llvm/lib/IR/Assumptions.cpp b/llvm/lib/IR/Assumptions.cpp
index ad874485fb3a0..6adbbc4a63b0a 100644
--- a/llvm/lib/IR/Assumptions.cpp
+++ b/llvm/lib/IR/Assumptions.cpp
@@ -42,8 +42,7 @@ DenseSet<StringRef> getAssumptions(const Attribute &A) {
   SmallVector<StringRef, 8> Strings;
   A.getValueAsString().split(Strings, ",");
 
-  for (StringRef Str : Strings)
-    Assumptions.insert(Str);
+  Assumptions.insert_range(Strings);
   return Assumptions;
 }
 
diff --git a/llvm/lib/LTO/LTOCodeGenerator.cpp b/llvm/lib/LTO/LTOCodeGenerator.cpp
index 6b66a88880053..70b7135fcbef0 100644
--- a/llvm/lib/LTO/LTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/LTOCodeGenerator.cpp
@@ -142,8 +142,7 @@ LTOCodeGenerator::LTOCodeGenerator(LLVMContext &Context)
 LTOCodeGenerator::~LTOCodeGenerator() = default;
 
 void LTOCodeGenerator::setAsmUndefinedRefs(LTOModule *Mod) {
-  for (const StringRef &Undef : Mod->getAsmUndefinedRefs())
-    AsmUndefinedRefs.insert(Undef);
+  AsmUndefinedRefs.insert_range(Mod->getAsmUndefinedRefs());
 }
 
 bool LTOCodeGenerator::addModule(LTOModule *Mod) {
diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
index 11e88ca4a83eb..9e7f8187fe49c 100644
--- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
+++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -1057,8 +1057,7 @@ void ThinLTOCodeGenerator::run() {
   std::map<ValueInfo, std::vector<VTableSlotSummary>> LocalWPDTargetsMap;
   std::set<GlobalValue::GUID> ExportedGUIDs;
   runWholeProgramDevirtOnIndex(*Index, ExportedGUIDs, LocalWPDTargetsMap);
-  for (auto GUID : ExportedGUIDs)
-    GUIDPreservedSymbols.insert(GUID);
+  GUIDPreservedSymbols.insert_range(ExportedGUIDs);
 
   // Compute prevailing symbols
   DenseMap<GlobalValue::GUID, const GlobalValueSummary *> PrevailingCopy;
diff --git a/llvm/tools/bugpoint/CrashDebugger.cpp b/llvm/tools/bugpoint/CrashDebugger.cpp
index 7dbbf73679584..2268aac351789 100644
--- a/llvm/tools/bugpoint/CrashDebugger.cpp
+++ b/llvm/tools/bugpoint/CrashDebugger.cpp
@@ -417,9 +417,8 @@ void simpleSimplifyCfg(Function &F, SmallVectorImpl<BasicBlock *> &BBs) {
   // undefined behavior into unreachables, but bugpoint was the thing that
   // generated the undefined behavior, and we don't want it to kill the entire
   // program.
-  SmallPtrSet<BasicBlock *, 16> Visited;
-  for (auto *BB : depth_first(&F.getEntryBlock()))
-    Visited.insert(BB);
+  SmallPtrSet<BasicBlock *, 16> Visited(llvm::from_range,
+                                        depth_first(&F.getEntryBlock()));
 
   SmallVector<BasicBlock *, 16> Unreachable;
   for (auto &BB : F)
@@ -917,9 +916,7 @@ bool ReduceCrashingNamedMD::TestNamedMDs(std::vector<std::string> &NamedMDs) {
   outs() << ": ";
 
   // Make a StringMap for faster lookup
-  StringSet<> Names;
-  for (const std::string &Name : NamedMDs)
-    Names.insert(Name);
+  StringSet<> Names(llvm::from_range, NamedMDs);
 
   // First collect all the metadata to delete in a vector, then
   // delete them all at once to avoid invalidating the iterator
diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
index 01fa2a33ec1f5..ad40d8d8baa36 100644
--- a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
+++ b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
@@ -343,11 +343,9 @@ static std::unique_ptr<MachineFunction> cloneMF(MachineFunction *SrcMF,
     }
   }
 
-  DenseSet<const uint32_t *> ConstRegisterMasks;
-
   // Track predefined/named regmasks which we ignore.
-  for (const uint32_t *Mask : TRI->getRegMasks())
-    ConstRegisterMasks.insert(Mask);
+  DenseSet<const uint32_t *> ConstRegisterMasks(llvm::from_range,
+                                                TRI->getRegMasks());
 
   // Clone instructions.
   for (auto &SrcMBB : *SrcMF) {
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp b/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
index f900d5cf8017c..953e0e51afd82 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceRegisterMasks.cpp
@@ -24,8 +24,7 @@ static void reduceMasksInFunction(Oracle &O, MachineFunction &MF) {
 
   // Track predefined/named regmasks which we ignore.
   const unsigned NumRegs = TRI->getNumRegs();
-  for (const uint32_t *Mask : TRI->getRegMasks())
-    ConstRegisterMasks.insert(Mask);
+  ConstRegisterMasks.insert_range(TRI->getRegMasks());
 
   for (MachineBasicBlock &MBB : MF) {
     for (MachineInstr &MI : MBB) {

@kazutakahirata kazutakahirata merged commit 40d251d into llvm:main Mar 26, 2025
16 checks passed
@kazutakahirata kazutakahirata deleted the cleanup_001_set_use_insert_range_for_llvm branch March 26, 2025 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
llvm:ir llvm:transforms LTO Link time optimization (regular/full LTO or ThinLTO) testing-tools
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants