-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[llvm] Construct SmallVector with iterator ranges (NFC) #136460
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
[llvm] Construct SmallVector with iterator ranges (NFC) #136460
Conversation
@llvm/pr-subscribers-llvm-analysis @llvm/pr-subscribers-backend-x86 Author: Kazu Hirata (kazutakahirata) ChangesFull diff: https://github.com/llvm/llvm-project/pull/136460.diff 17 Files Affected:
diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp
index 1f0cda7e3f91f..30b6c1613d3ad 100644
--- a/llvm/lib/Analysis/CGSCCPassManager.cpp
+++ b/llvm/lib/Analysis/CGSCCPassManager.cpp
@@ -515,9 +515,7 @@ PreservedAnalyses CGSCCToFunctionPassAdaptor::run(LazyCallGraph::SCC &C,
FunctionAnalysisManager &FAM =
AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager();
- SmallVector<LazyCallGraph::Node *, 4> Nodes;
- for (LazyCallGraph::Node &N : C)
- Nodes.push_back(&N);
+ SmallVector<LazyCallGraph::Node *, 4> Nodes(llvm::make_pointer_range(C));
// The SCC may get split while we are optimizing functions due to deleting
// edges. If this happens, the current SCC can shift, so keep track of
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
index 2292590b135ea..743101c228200 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
@@ -81,11 +81,8 @@ void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
Asm.OutStreamer->switchSection(StrSection);
// Get all of the string pool entries and sort them by their offset.
- SmallVector<const StringMapEntry<EntryTy> *, 64> Entries;
- Entries.reserve(Pool.size());
-
- for (const auto &E : Pool)
- Entries.push_back(&E);
+ SmallVector<const StringMapEntry<EntryTy> *, 64> Entries(
+ llvm::make_pointer_range(Pool));
llvm::sort(Entries, [](const StringMapEntry<EntryTy> *A,
const StringMapEntry<EntryTy> *B) {
diff --git a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
index abe9ae7a3da16..44c9ec028aadb 100644
--- a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
@@ -643,9 +643,7 @@ EHFrameCFIBlockInspector EHFrameCFIBlockInspector::FromEdgeScan(Block &B) {
return EHFrameCFIBlockInspector(nullptr);
if (B.edges_size() == 1)
return EHFrameCFIBlockInspector(&*B.edges().begin());
- SmallVector<Edge *, 3> Es;
- for (auto &E : B.edges())
- Es.push_back(&E);
+ SmallVector<Edge *, 3> Es(llvm::make_pointer_range(B.edges()));
assert(Es.size() >= 2 && Es.size() <= 3 && "Unexpected number of edges");
llvm::sort(Es, [](const Edge *LHS, const Edge *RHS) {
return LHS->getOffset() < RHS->getOffset();
diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 06f240301322c..7e28f58046b1f 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -122,9 +122,8 @@ getInsertionRange(BasicBlock &BB) {
}
void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -395,9 +394,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
return isRetVoid ? nullptr : Call;
};
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -421,9 +419,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -561,9 +558,8 @@ void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
PHI->addIncoming(Src, Pred);
}
- SmallVector<Instruction *, 32> InstsAfter;
- for (Instruction &I : getInsertionRange(BB))
- InstsAfter.push_back(&I);
+ SmallVector<Instruction *, 32> InstsAfter(
+ llvm::make_pointer_range(getInsertionRange(BB)));
IB.connectToSink(BB, InstsAfter, PHI);
}
@@ -573,9 +569,8 @@ void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) {
}
}
void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
// Choose an Instruction to mutate.
diff --git a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
index 8aea3d6f7e059..22ce5200e132d 100644
--- a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
+++ b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
@@ -84,10 +84,8 @@ RandomIRBuilder::findOrCreateGlobalVariable(Module *M, ArrayRef<Value *> Srcs,
return Pred.matches(Srcs, PoisonValue::get(GV->getValueType()));
};
bool DidCreate = false;
- SmallVector<GlobalVariable *, 4> GlobalVars;
- for (GlobalVariable &GV : M->globals()) {
- GlobalVars.push_back(&GV);
- }
+ SmallVector<GlobalVariable *, 4> GlobalVars(
+ llvm::make_pointer_range(M->globals()));
auto RS = makeSampler(Rand, make_filter_range(GlobalVars, MatchesPred));
RS.sample(nullptr, 1);
GlobalVariable *GV = RS.getSelection();
@@ -146,10 +144,8 @@ Value *RandomIRBuilder::findOrCreateSource(BasicBlock &BB,
auto Dominators = getDominators(&BB);
std::shuffle(Dominators.begin(), Dominators.end(), Rand);
for (BasicBlock *Dom : Dominators) {
- SmallVector<Instruction *, 16> Instructions;
- for (Instruction &I : *Dom) {
- Instructions.push_back(&I);
- }
+ SmallVector<Instruction *, 16> Instructions(
+ llvm::make_pointer_range(*Dom));
auto RS =
makeSampler(Rand, make_filter_range(Instructions, MatchesPred));
// Also consider choosing no source, meaning we want a new one.
diff --git a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
index 11e2c940548e2..acc22da393ee0 100644
--- a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
@@ -656,9 +656,7 @@ Function *AArch64Arm64ECCallLowering::buildGuestExitThunk(Function *F) {
GuardCheck->setCallingConv(CallingConv::CFGuard_Check);
Value *GuardRetVal = B.CreateBitCast(GuardCheck, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, GuardRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
@@ -715,9 +713,7 @@ AArch64Arm64ECCallLowering::buildPatchableThunk(GlobalAlias *UnmangledAlias,
Dispatch->setCallingConv(CallingConv::CFGuard_Check);
Value *DispatchRetVal = B.CreateBitCast(Dispatch, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, DispatchRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
diff --git a/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
index bb9a0a2bdf98b..f6705669714da 100644
--- a/llvm/lib/Target/ARM/A15SDOptimizer.cpp
+++ b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
@@ -617,10 +617,9 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
continue;
// Collect all the uses of this MI's DPR def for updating later.
- SmallVector<MachineOperand*, 8> Uses;
Register DPRDefReg = MI->getOperand(0).getReg();
- for (MachineOperand &MO : MRI->use_operands(DPRDefReg))
- Uses.push_back(&MO);
+ SmallVector<MachineOperand *, 8> Uses(
+ llvm::make_pointer_range(MRI->use_operands(DPRDefReg)));
// We can optimize this.
unsigned NewReg = optimizeSDPattern(MI);
diff --git a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
index 6452fa05947dd..ee835dba9b020 100644
--- a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
@@ -554,9 +554,7 @@ static void handleByValParam(const NVPTXTargetMachine &TM, Argument *Arg) {
if (ArgUseIsReadOnly && AUC.Conditionals.empty()) {
// Convert all loads and intermediate operations to use parameter AS and
// skip creation of a local copy of the argument.
- SmallVector<Use *, 16> UsesToUpdate;
- for (Use &U : Arg->uses())
- UsesToUpdate.push_back(&U);
+ SmallVector<Use *, 16> UsesToUpdate(llvm::make_pointer_range(Arg->uses()));
Value *ArgInParamAS = new AddrSpaceCastInst(
Arg, PointerType::get(StructType->getContext(), ADDRESS_SPACE_PARAM),
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index a7e4487f6f5d5..6205dfedb79fb 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -2399,9 +2399,8 @@ bool SPIRVEmitIntrinsics::runOnFunction(Function &Func) {
preprocessUndefs(B);
preprocessCompositeConstants(B);
- SmallVector<Instruction *> Worklist;
- for (auto &I : instructions(Func))
- Worklist.push_back(&I);
+ SmallVector<Instruction *> Worklist(
+ llvm::make_pointer_range(instructions(Func)));
applyDemangledPtrArgTypes(B);
diff --git a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
index d2de71ce10c10..c96ee6b02491a 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
@@ -99,9 +99,8 @@ void applySPIRVDistance(MachineInstr &MI, MachineRegisterInfo &MRI,
SPIRVGlobalRegistry *GR =
MI.getMF()->getSubtarget<SPIRVSubtarget>().getSPIRVGlobalRegistry();
auto RemoveAllUses = [&](Register Reg) {
- SmallVector<MachineInstr *, 4> UsesToErase;
- for (auto &UseMI : MRI.use_instructions(Reg))
- UsesToErase.push_back(&UseMI);
+ SmallVector<MachineInstr *, 4> UsesToErase(
+ llvm::make_pointer_range(MRI.use_instructions(Reg)));
// calling eraseFromParent to early invalidates the iterator.
for (auto *MIToErase : UsesToErase) {
diff --git a/llvm/lib/Target/X86/X86CmovConversion.cpp b/llvm/lib/Target/X86/X86CmovConversion.cpp
index 488b3126b8609..e389ce9a296b1 100644
--- a/llvm/lib/Target/X86/X86CmovConversion.cpp
+++ b/llvm/lib/Target/X86/X86CmovConversion.cpp
@@ -190,9 +190,7 @@ bool X86CmovConverterPass::runOnMachineFunction(MachineFunction &MF) {
// execution behind a branch is better suited to handle on modern x86 chips.
if (ForceMemOperand || ForceAll) {
CmovGroups AllCmovGroups;
- SmallVector<MachineBasicBlock *, 4> Blocks;
- for (auto &MBB : MF)
- Blocks.push_back(&MBB);
+ SmallVector<MachineBasicBlock *, 4> Blocks(llvm::make_pointer_range(MF));
if (collectCmovCandidates(Blocks, AllCmovGroups, /*IncludeLoads*/ true)) {
for (auto &Group : AllCmovGroups) {
// Skip any group that doesn't do at least one memory operand cmov.
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index db97f7e1efcfd..70610f7c020c8 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -406,9 +406,7 @@ bool IndVarSimplify::rewriteNonIntegerIVs(Loop *L) {
// the SCEV routines.
BasicBlock *Header = L->getHeader();
- SmallVector<WeakTrackingVH, 8> PHIs;
- for (PHINode &PN : Header->phis())
- PHIs.push_back(&PN);
+ SmallVector<WeakTrackingVH, 8> PHIs(llvm::make_pointer_range(Header->phis()));
bool Changed = false;
for (WeakTrackingVH &PHI : PHIs)
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
index a7cd47325845a..1928adc2d7e72 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
@@ -63,10 +63,7 @@ class TrivialModuleBuilder {
Function *insertSimpleCallFunction(Module *M, Function *Callee) {
Function *Result = startFunction(M, Callee->getFunctionType(), "caller");
- SmallVector<Value*, 1> CallArgs;
-
- for (Argument &A : Result->args())
- CallArgs.push_back(&A);
+ SmallVector<Value *, 1> CallArgs(llvm::make_pointer_range(Result->args()));
Value *ReturnCode = Builder.CreateCall(Callee, CallArgs);
Builder.CreateRet(ReturnCode);
diff --git a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
index 02d87251a428c..b7f5234ffcda1 100644
--- a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
+++ b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
@@ -597,10 +597,7 @@ TEST(RandomIRBuilderTest, SrcAndSinkWOrphanBlock) {
std::unique_ptr<Module> M = parseAssembly(Source, Ctx);
Function &F = *M->getFunction("test");
for (BasicBlock &BB : F) {
- SmallVector<Instruction *, 4> Insts;
- for (Instruction &I : BB) {
- Insts.push_back(&I);
- }
+ SmallVector<Instruction *, 4> Insts(llvm::make_pointer_range(BB));
for (int j = 0; j < 10; j++) {
IB.findOrCreateSource(BB, Insts);
}
diff --git a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
index 00d45e2957dde..5607c633b7a88 100644
--- a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
+++ b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
@@ -224,9 +224,8 @@ TEST(BasicBlockDbgInfoTest, MarkerOperations) {
EXPECT_EQ(BB.size(), 1u);
EXPECT_EQ(Marker2->StoredDbgRecords.size(), 2u);
// They should also be in the correct order.
- SmallVector<DbgRecord *, 2> DVRs;
- for (DbgRecord &DVR : Marker2->getDbgRecordRange())
- DVRs.push_back(&DVR);
+ SmallVector<DbgRecord *, 2> DVRs(
+ llvm::make_pointer_range(Marker2->getDbgRecordRange()));
EXPECT_EQ(DVRs[0], DVR1);
EXPECT_EQ(DVRs[1], DVR2);
@@ -577,9 +576,8 @@ class DbgSpliceTest : public ::testing::Test {
bool CheckDVROrder(Instruction *I,
SmallVector<DbgVariableRecord *> CheckVals) {
- SmallVector<DbgRecord *> Vals;
- for (DbgRecord &D : I->getDbgRecordRange())
- Vals.push_back(&D);
+ SmallVector<DbgRecord *> Vals(
+ llvm::make_pointer_range(I->getDbgRecordRange()));
EXPECT_EQ(Vals.size(), CheckVals.size());
if (Vals.size() != CheckVals.size())
diff --git a/llvm/unittests/IR/FunctionTest.cpp b/llvm/unittests/IR/FunctionTest.cpp
index f6735fb55a6d5..7ba7584e22976 100644
--- a/llvm/unittests/IR/FunctionTest.cpp
+++ b/llvm/unittests/IR/FunctionTest.cpp
@@ -83,9 +83,7 @@ TEST(FunctionTest, stealArgumentListFrom) {
// Save arguments from F1 for later assertions. F1 won't have lazy arguments
// anymore.
- SmallVector<Argument *, 4> Args;
- for (Argument &A : F1->args())
- Args.push_back(&A);
+ SmallVector<Argument *, 4> Args(llvm::make_pointer_range(F1->args()));
EXPECT_EQ(2u, Args.size());
EXPECT_FALSE(F1->hasLazyArguments());
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
index 59498371b4d73..ea09fba85ba6a 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
@@ -157,9 +157,7 @@ define void @foo(i8 %v0) {
// of references.
template <typename RangeT>
static SmallVector<sandboxir::Instruction *> getPtrVec(RangeT Range) {
- SmallVector<sandboxir::Instruction *> PtrVec;
- for (sandboxir::Instruction &I : Range)
- PtrVec.push_back(&I);
+ SmallVector<sandboxir::Instruction *> PtrVec(llvm::make_pointer_range(Range));
return PtrVec;
}
|
@llvm/pr-subscribers-backend-nvptx Author: Kazu Hirata (kazutakahirata) ChangesFull diff: https://github.com/llvm/llvm-project/pull/136460.diff 17 Files Affected:
diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp
index 1f0cda7e3f91f..30b6c1613d3ad 100644
--- a/llvm/lib/Analysis/CGSCCPassManager.cpp
+++ b/llvm/lib/Analysis/CGSCCPassManager.cpp
@@ -515,9 +515,7 @@ PreservedAnalyses CGSCCToFunctionPassAdaptor::run(LazyCallGraph::SCC &C,
FunctionAnalysisManager &FAM =
AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager();
- SmallVector<LazyCallGraph::Node *, 4> Nodes;
- for (LazyCallGraph::Node &N : C)
- Nodes.push_back(&N);
+ SmallVector<LazyCallGraph::Node *, 4> Nodes(llvm::make_pointer_range(C));
// The SCC may get split while we are optimizing functions due to deleting
// edges. If this happens, the current SCC can shift, so keep track of
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
index 2292590b135ea..743101c228200 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
@@ -81,11 +81,8 @@ void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
Asm.OutStreamer->switchSection(StrSection);
// Get all of the string pool entries and sort them by their offset.
- SmallVector<const StringMapEntry<EntryTy> *, 64> Entries;
- Entries.reserve(Pool.size());
-
- for (const auto &E : Pool)
- Entries.push_back(&E);
+ SmallVector<const StringMapEntry<EntryTy> *, 64> Entries(
+ llvm::make_pointer_range(Pool));
llvm::sort(Entries, [](const StringMapEntry<EntryTy> *A,
const StringMapEntry<EntryTy> *B) {
diff --git a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
index abe9ae7a3da16..44c9ec028aadb 100644
--- a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
@@ -643,9 +643,7 @@ EHFrameCFIBlockInspector EHFrameCFIBlockInspector::FromEdgeScan(Block &B) {
return EHFrameCFIBlockInspector(nullptr);
if (B.edges_size() == 1)
return EHFrameCFIBlockInspector(&*B.edges().begin());
- SmallVector<Edge *, 3> Es;
- for (auto &E : B.edges())
- Es.push_back(&E);
+ SmallVector<Edge *, 3> Es(llvm::make_pointer_range(B.edges()));
assert(Es.size() >= 2 && Es.size() <= 3 && "Unexpected number of edges");
llvm::sort(Es, [](const Edge *LHS, const Edge *RHS) {
return LHS->getOffset() < RHS->getOffset();
diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 06f240301322c..7e28f58046b1f 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -122,9 +122,8 @@ getInsertionRange(BasicBlock &BB) {
}
void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -395,9 +394,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
return isRetVoid ? nullptr : Call;
};
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -421,9 +419,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -561,9 +558,8 @@ void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
PHI->addIncoming(Src, Pred);
}
- SmallVector<Instruction *, 32> InstsAfter;
- for (Instruction &I : getInsertionRange(BB))
- InstsAfter.push_back(&I);
+ SmallVector<Instruction *, 32> InstsAfter(
+ llvm::make_pointer_range(getInsertionRange(BB)));
IB.connectToSink(BB, InstsAfter, PHI);
}
@@ -573,9 +569,8 @@ void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) {
}
}
void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
// Choose an Instruction to mutate.
diff --git a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
index 8aea3d6f7e059..22ce5200e132d 100644
--- a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
+++ b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
@@ -84,10 +84,8 @@ RandomIRBuilder::findOrCreateGlobalVariable(Module *M, ArrayRef<Value *> Srcs,
return Pred.matches(Srcs, PoisonValue::get(GV->getValueType()));
};
bool DidCreate = false;
- SmallVector<GlobalVariable *, 4> GlobalVars;
- for (GlobalVariable &GV : M->globals()) {
- GlobalVars.push_back(&GV);
- }
+ SmallVector<GlobalVariable *, 4> GlobalVars(
+ llvm::make_pointer_range(M->globals()));
auto RS = makeSampler(Rand, make_filter_range(GlobalVars, MatchesPred));
RS.sample(nullptr, 1);
GlobalVariable *GV = RS.getSelection();
@@ -146,10 +144,8 @@ Value *RandomIRBuilder::findOrCreateSource(BasicBlock &BB,
auto Dominators = getDominators(&BB);
std::shuffle(Dominators.begin(), Dominators.end(), Rand);
for (BasicBlock *Dom : Dominators) {
- SmallVector<Instruction *, 16> Instructions;
- for (Instruction &I : *Dom) {
- Instructions.push_back(&I);
- }
+ SmallVector<Instruction *, 16> Instructions(
+ llvm::make_pointer_range(*Dom));
auto RS =
makeSampler(Rand, make_filter_range(Instructions, MatchesPred));
// Also consider choosing no source, meaning we want a new one.
diff --git a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
index 11e2c940548e2..acc22da393ee0 100644
--- a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
@@ -656,9 +656,7 @@ Function *AArch64Arm64ECCallLowering::buildGuestExitThunk(Function *F) {
GuardCheck->setCallingConv(CallingConv::CFGuard_Check);
Value *GuardRetVal = B.CreateBitCast(GuardCheck, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, GuardRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
@@ -715,9 +713,7 @@ AArch64Arm64ECCallLowering::buildPatchableThunk(GlobalAlias *UnmangledAlias,
Dispatch->setCallingConv(CallingConv::CFGuard_Check);
Value *DispatchRetVal = B.CreateBitCast(Dispatch, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, DispatchRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
diff --git a/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
index bb9a0a2bdf98b..f6705669714da 100644
--- a/llvm/lib/Target/ARM/A15SDOptimizer.cpp
+++ b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
@@ -617,10 +617,9 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
continue;
// Collect all the uses of this MI's DPR def for updating later.
- SmallVector<MachineOperand*, 8> Uses;
Register DPRDefReg = MI->getOperand(0).getReg();
- for (MachineOperand &MO : MRI->use_operands(DPRDefReg))
- Uses.push_back(&MO);
+ SmallVector<MachineOperand *, 8> Uses(
+ llvm::make_pointer_range(MRI->use_operands(DPRDefReg)));
// We can optimize this.
unsigned NewReg = optimizeSDPattern(MI);
diff --git a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
index 6452fa05947dd..ee835dba9b020 100644
--- a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
@@ -554,9 +554,7 @@ static void handleByValParam(const NVPTXTargetMachine &TM, Argument *Arg) {
if (ArgUseIsReadOnly && AUC.Conditionals.empty()) {
// Convert all loads and intermediate operations to use parameter AS and
// skip creation of a local copy of the argument.
- SmallVector<Use *, 16> UsesToUpdate;
- for (Use &U : Arg->uses())
- UsesToUpdate.push_back(&U);
+ SmallVector<Use *, 16> UsesToUpdate(llvm::make_pointer_range(Arg->uses()));
Value *ArgInParamAS = new AddrSpaceCastInst(
Arg, PointerType::get(StructType->getContext(), ADDRESS_SPACE_PARAM),
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index a7e4487f6f5d5..6205dfedb79fb 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -2399,9 +2399,8 @@ bool SPIRVEmitIntrinsics::runOnFunction(Function &Func) {
preprocessUndefs(B);
preprocessCompositeConstants(B);
- SmallVector<Instruction *> Worklist;
- for (auto &I : instructions(Func))
- Worklist.push_back(&I);
+ SmallVector<Instruction *> Worklist(
+ llvm::make_pointer_range(instructions(Func)));
applyDemangledPtrArgTypes(B);
diff --git a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
index d2de71ce10c10..c96ee6b02491a 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
@@ -99,9 +99,8 @@ void applySPIRVDistance(MachineInstr &MI, MachineRegisterInfo &MRI,
SPIRVGlobalRegistry *GR =
MI.getMF()->getSubtarget<SPIRVSubtarget>().getSPIRVGlobalRegistry();
auto RemoveAllUses = [&](Register Reg) {
- SmallVector<MachineInstr *, 4> UsesToErase;
- for (auto &UseMI : MRI.use_instructions(Reg))
- UsesToErase.push_back(&UseMI);
+ SmallVector<MachineInstr *, 4> UsesToErase(
+ llvm::make_pointer_range(MRI.use_instructions(Reg)));
// calling eraseFromParent to early invalidates the iterator.
for (auto *MIToErase : UsesToErase) {
diff --git a/llvm/lib/Target/X86/X86CmovConversion.cpp b/llvm/lib/Target/X86/X86CmovConversion.cpp
index 488b3126b8609..e389ce9a296b1 100644
--- a/llvm/lib/Target/X86/X86CmovConversion.cpp
+++ b/llvm/lib/Target/X86/X86CmovConversion.cpp
@@ -190,9 +190,7 @@ bool X86CmovConverterPass::runOnMachineFunction(MachineFunction &MF) {
// execution behind a branch is better suited to handle on modern x86 chips.
if (ForceMemOperand || ForceAll) {
CmovGroups AllCmovGroups;
- SmallVector<MachineBasicBlock *, 4> Blocks;
- for (auto &MBB : MF)
- Blocks.push_back(&MBB);
+ SmallVector<MachineBasicBlock *, 4> Blocks(llvm::make_pointer_range(MF));
if (collectCmovCandidates(Blocks, AllCmovGroups, /*IncludeLoads*/ true)) {
for (auto &Group : AllCmovGroups) {
// Skip any group that doesn't do at least one memory operand cmov.
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index db97f7e1efcfd..70610f7c020c8 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -406,9 +406,7 @@ bool IndVarSimplify::rewriteNonIntegerIVs(Loop *L) {
// the SCEV routines.
BasicBlock *Header = L->getHeader();
- SmallVector<WeakTrackingVH, 8> PHIs;
- for (PHINode &PN : Header->phis())
- PHIs.push_back(&PN);
+ SmallVector<WeakTrackingVH, 8> PHIs(llvm::make_pointer_range(Header->phis()));
bool Changed = false;
for (WeakTrackingVH &PHI : PHIs)
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
index a7cd47325845a..1928adc2d7e72 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
@@ -63,10 +63,7 @@ class TrivialModuleBuilder {
Function *insertSimpleCallFunction(Module *M, Function *Callee) {
Function *Result = startFunction(M, Callee->getFunctionType(), "caller");
- SmallVector<Value*, 1> CallArgs;
-
- for (Argument &A : Result->args())
- CallArgs.push_back(&A);
+ SmallVector<Value *, 1> CallArgs(llvm::make_pointer_range(Result->args()));
Value *ReturnCode = Builder.CreateCall(Callee, CallArgs);
Builder.CreateRet(ReturnCode);
diff --git a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
index 02d87251a428c..b7f5234ffcda1 100644
--- a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
+++ b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
@@ -597,10 +597,7 @@ TEST(RandomIRBuilderTest, SrcAndSinkWOrphanBlock) {
std::unique_ptr<Module> M = parseAssembly(Source, Ctx);
Function &F = *M->getFunction("test");
for (BasicBlock &BB : F) {
- SmallVector<Instruction *, 4> Insts;
- for (Instruction &I : BB) {
- Insts.push_back(&I);
- }
+ SmallVector<Instruction *, 4> Insts(llvm::make_pointer_range(BB));
for (int j = 0; j < 10; j++) {
IB.findOrCreateSource(BB, Insts);
}
diff --git a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
index 00d45e2957dde..5607c633b7a88 100644
--- a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
+++ b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
@@ -224,9 +224,8 @@ TEST(BasicBlockDbgInfoTest, MarkerOperations) {
EXPECT_EQ(BB.size(), 1u);
EXPECT_EQ(Marker2->StoredDbgRecords.size(), 2u);
// They should also be in the correct order.
- SmallVector<DbgRecord *, 2> DVRs;
- for (DbgRecord &DVR : Marker2->getDbgRecordRange())
- DVRs.push_back(&DVR);
+ SmallVector<DbgRecord *, 2> DVRs(
+ llvm::make_pointer_range(Marker2->getDbgRecordRange()));
EXPECT_EQ(DVRs[0], DVR1);
EXPECT_EQ(DVRs[1], DVR2);
@@ -577,9 +576,8 @@ class DbgSpliceTest : public ::testing::Test {
bool CheckDVROrder(Instruction *I,
SmallVector<DbgVariableRecord *> CheckVals) {
- SmallVector<DbgRecord *> Vals;
- for (DbgRecord &D : I->getDbgRecordRange())
- Vals.push_back(&D);
+ SmallVector<DbgRecord *> Vals(
+ llvm::make_pointer_range(I->getDbgRecordRange()));
EXPECT_EQ(Vals.size(), CheckVals.size());
if (Vals.size() != CheckVals.size())
diff --git a/llvm/unittests/IR/FunctionTest.cpp b/llvm/unittests/IR/FunctionTest.cpp
index f6735fb55a6d5..7ba7584e22976 100644
--- a/llvm/unittests/IR/FunctionTest.cpp
+++ b/llvm/unittests/IR/FunctionTest.cpp
@@ -83,9 +83,7 @@ TEST(FunctionTest, stealArgumentListFrom) {
// Save arguments from F1 for later assertions. F1 won't have lazy arguments
// anymore.
- SmallVector<Argument *, 4> Args;
- for (Argument &A : F1->args())
- Args.push_back(&A);
+ SmallVector<Argument *, 4> Args(llvm::make_pointer_range(F1->args()));
EXPECT_EQ(2u, Args.size());
EXPECT_FALSE(F1->hasLazyArguments());
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
index 59498371b4d73..ea09fba85ba6a 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
@@ -157,9 +157,7 @@ define void @foo(i8 %v0) {
// of references.
template <typename RangeT>
static SmallVector<sandboxir::Instruction *> getPtrVec(RangeT Range) {
- SmallVector<sandboxir::Instruction *> PtrVec;
- for (sandboxir::Instruction &I : Range)
- PtrVec.push_back(&I);
+ SmallVector<sandboxir::Instruction *> PtrVec(llvm::make_pointer_range(Range));
return PtrVec;
}
|
@llvm/pr-subscribers-llvm-ir Author: Kazu Hirata (kazutakahirata) ChangesFull diff: https://github.com/llvm/llvm-project/pull/136460.diff 17 Files Affected:
diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp
index 1f0cda7e3f91f..30b6c1613d3ad 100644
--- a/llvm/lib/Analysis/CGSCCPassManager.cpp
+++ b/llvm/lib/Analysis/CGSCCPassManager.cpp
@@ -515,9 +515,7 @@ PreservedAnalyses CGSCCToFunctionPassAdaptor::run(LazyCallGraph::SCC &C,
FunctionAnalysisManager &FAM =
AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager();
- SmallVector<LazyCallGraph::Node *, 4> Nodes;
- for (LazyCallGraph::Node &N : C)
- Nodes.push_back(&N);
+ SmallVector<LazyCallGraph::Node *, 4> Nodes(llvm::make_pointer_range(C));
// The SCC may get split while we are optimizing functions due to deleting
// edges. If this happens, the current SCC can shift, so keep track of
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
index 2292590b135ea..743101c228200 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
@@ -81,11 +81,8 @@ void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
Asm.OutStreamer->switchSection(StrSection);
// Get all of the string pool entries and sort them by their offset.
- SmallVector<const StringMapEntry<EntryTy> *, 64> Entries;
- Entries.reserve(Pool.size());
-
- for (const auto &E : Pool)
- Entries.push_back(&E);
+ SmallVector<const StringMapEntry<EntryTy> *, 64> Entries(
+ llvm::make_pointer_range(Pool));
llvm::sort(Entries, [](const StringMapEntry<EntryTy> *A,
const StringMapEntry<EntryTy> *B) {
diff --git a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
index abe9ae7a3da16..44c9ec028aadb 100644
--- a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
@@ -643,9 +643,7 @@ EHFrameCFIBlockInspector EHFrameCFIBlockInspector::FromEdgeScan(Block &B) {
return EHFrameCFIBlockInspector(nullptr);
if (B.edges_size() == 1)
return EHFrameCFIBlockInspector(&*B.edges().begin());
- SmallVector<Edge *, 3> Es;
- for (auto &E : B.edges())
- Es.push_back(&E);
+ SmallVector<Edge *, 3> Es(llvm::make_pointer_range(B.edges()));
assert(Es.size() >= 2 && Es.size() <= 3 && "Unexpected number of edges");
llvm::sort(Es, [](const Edge *LHS, const Edge *RHS) {
return LHS->getOffset() < RHS->getOffset();
diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 06f240301322c..7e28f58046b1f 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -122,9 +122,8 @@ getInsertionRange(BasicBlock &BB) {
}
void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -395,9 +394,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
return isRetVoid ? nullptr : Call;
};
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -421,9 +419,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -561,9 +558,8 @@ void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
PHI->addIncoming(Src, Pred);
}
- SmallVector<Instruction *, 32> InstsAfter;
- for (Instruction &I : getInsertionRange(BB))
- InstsAfter.push_back(&I);
+ SmallVector<Instruction *, 32> InstsAfter(
+ llvm::make_pointer_range(getInsertionRange(BB)));
IB.connectToSink(BB, InstsAfter, PHI);
}
@@ -573,9 +569,8 @@ void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) {
}
}
void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
// Choose an Instruction to mutate.
diff --git a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
index 8aea3d6f7e059..22ce5200e132d 100644
--- a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
+++ b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
@@ -84,10 +84,8 @@ RandomIRBuilder::findOrCreateGlobalVariable(Module *M, ArrayRef<Value *> Srcs,
return Pred.matches(Srcs, PoisonValue::get(GV->getValueType()));
};
bool DidCreate = false;
- SmallVector<GlobalVariable *, 4> GlobalVars;
- for (GlobalVariable &GV : M->globals()) {
- GlobalVars.push_back(&GV);
- }
+ SmallVector<GlobalVariable *, 4> GlobalVars(
+ llvm::make_pointer_range(M->globals()));
auto RS = makeSampler(Rand, make_filter_range(GlobalVars, MatchesPred));
RS.sample(nullptr, 1);
GlobalVariable *GV = RS.getSelection();
@@ -146,10 +144,8 @@ Value *RandomIRBuilder::findOrCreateSource(BasicBlock &BB,
auto Dominators = getDominators(&BB);
std::shuffle(Dominators.begin(), Dominators.end(), Rand);
for (BasicBlock *Dom : Dominators) {
- SmallVector<Instruction *, 16> Instructions;
- for (Instruction &I : *Dom) {
- Instructions.push_back(&I);
- }
+ SmallVector<Instruction *, 16> Instructions(
+ llvm::make_pointer_range(*Dom));
auto RS =
makeSampler(Rand, make_filter_range(Instructions, MatchesPred));
// Also consider choosing no source, meaning we want a new one.
diff --git a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
index 11e2c940548e2..acc22da393ee0 100644
--- a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
@@ -656,9 +656,7 @@ Function *AArch64Arm64ECCallLowering::buildGuestExitThunk(Function *F) {
GuardCheck->setCallingConv(CallingConv::CFGuard_Check);
Value *GuardRetVal = B.CreateBitCast(GuardCheck, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, GuardRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
@@ -715,9 +713,7 @@ AArch64Arm64ECCallLowering::buildPatchableThunk(GlobalAlias *UnmangledAlias,
Dispatch->setCallingConv(CallingConv::CFGuard_Check);
Value *DispatchRetVal = B.CreateBitCast(Dispatch, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, DispatchRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
diff --git a/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
index bb9a0a2bdf98b..f6705669714da 100644
--- a/llvm/lib/Target/ARM/A15SDOptimizer.cpp
+++ b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
@@ -617,10 +617,9 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
continue;
// Collect all the uses of this MI's DPR def for updating later.
- SmallVector<MachineOperand*, 8> Uses;
Register DPRDefReg = MI->getOperand(0).getReg();
- for (MachineOperand &MO : MRI->use_operands(DPRDefReg))
- Uses.push_back(&MO);
+ SmallVector<MachineOperand *, 8> Uses(
+ llvm::make_pointer_range(MRI->use_operands(DPRDefReg)));
// We can optimize this.
unsigned NewReg = optimizeSDPattern(MI);
diff --git a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
index 6452fa05947dd..ee835dba9b020 100644
--- a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
@@ -554,9 +554,7 @@ static void handleByValParam(const NVPTXTargetMachine &TM, Argument *Arg) {
if (ArgUseIsReadOnly && AUC.Conditionals.empty()) {
// Convert all loads and intermediate operations to use parameter AS and
// skip creation of a local copy of the argument.
- SmallVector<Use *, 16> UsesToUpdate;
- for (Use &U : Arg->uses())
- UsesToUpdate.push_back(&U);
+ SmallVector<Use *, 16> UsesToUpdate(llvm::make_pointer_range(Arg->uses()));
Value *ArgInParamAS = new AddrSpaceCastInst(
Arg, PointerType::get(StructType->getContext(), ADDRESS_SPACE_PARAM),
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index a7e4487f6f5d5..6205dfedb79fb 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -2399,9 +2399,8 @@ bool SPIRVEmitIntrinsics::runOnFunction(Function &Func) {
preprocessUndefs(B);
preprocessCompositeConstants(B);
- SmallVector<Instruction *> Worklist;
- for (auto &I : instructions(Func))
- Worklist.push_back(&I);
+ SmallVector<Instruction *> Worklist(
+ llvm::make_pointer_range(instructions(Func)));
applyDemangledPtrArgTypes(B);
diff --git a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
index d2de71ce10c10..c96ee6b02491a 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
@@ -99,9 +99,8 @@ void applySPIRVDistance(MachineInstr &MI, MachineRegisterInfo &MRI,
SPIRVGlobalRegistry *GR =
MI.getMF()->getSubtarget<SPIRVSubtarget>().getSPIRVGlobalRegistry();
auto RemoveAllUses = [&](Register Reg) {
- SmallVector<MachineInstr *, 4> UsesToErase;
- for (auto &UseMI : MRI.use_instructions(Reg))
- UsesToErase.push_back(&UseMI);
+ SmallVector<MachineInstr *, 4> UsesToErase(
+ llvm::make_pointer_range(MRI.use_instructions(Reg)));
// calling eraseFromParent to early invalidates the iterator.
for (auto *MIToErase : UsesToErase) {
diff --git a/llvm/lib/Target/X86/X86CmovConversion.cpp b/llvm/lib/Target/X86/X86CmovConversion.cpp
index 488b3126b8609..e389ce9a296b1 100644
--- a/llvm/lib/Target/X86/X86CmovConversion.cpp
+++ b/llvm/lib/Target/X86/X86CmovConversion.cpp
@@ -190,9 +190,7 @@ bool X86CmovConverterPass::runOnMachineFunction(MachineFunction &MF) {
// execution behind a branch is better suited to handle on modern x86 chips.
if (ForceMemOperand || ForceAll) {
CmovGroups AllCmovGroups;
- SmallVector<MachineBasicBlock *, 4> Blocks;
- for (auto &MBB : MF)
- Blocks.push_back(&MBB);
+ SmallVector<MachineBasicBlock *, 4> Blocks(llvm::make_pointer_range(MF));
if (collectCmovCandidates(Blocks, AllCmovGroups, /*IncludeLoads*/ true)) {
for (auto &Group : AllCmovGroups) {
// Skip any group that doesn't do at least one memory operand cmov.
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index db97f7e1efcfd..70610f7c020c8 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -406,9 +406,7 @@ bool IndVarSimplify::rewriteNonIntegerIVs(Loop *L) {
// the SCEV routines.
BasicBlock *Header = L->getHeader();
- SmallVector<WeakTrackingVH, 8> PHIs;
- for (PHINode &PN : Header->phis())
- PHIs.push_back(&PN);
+ SmallVector<WeakTrackingVH, 8> PHIs(llvm::make_pointer_range(Header->phis()));
bool Changed = false;
for (WeakTrackingVH &PHI : PHIs)
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
index a7cd47325845a..1928adc2d7e72 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
@@ -63,10 +63,7 @@ class TrivialModuleBuilder {
Function *insertSimpleCallFunction(Module *M, Function *Callee) {
Function *Result = startFunction(M, Callee->getFunctionType(), "caller");
- SmallVector<Value*, 1> CallArgs;
-
- for (Argument &A : Result->args())
- CallArgs.push_back(&A);
+ SmallVector<Value *, 1> CallArgs(llvm::make_pointer_range(Result->args()));
Value *ReturnCode = Builder.CreateCall(Callee, CallArgs);
Builder.CreateRet(ReturnCode);
diff --git a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
index 02d87251a428c..b7f5234ffcda1 100644
--- a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
+++ b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
@@ -597,10 +597,7 @@ TEST(RandomIRBuilderTest, SrcAndSinkWOrphanBlock) {
std::unique_ptr<Module> M = parseAssembly(Source, Ctx);
Function &F = *M->getFunction("test");
for (BasicBlock &BB : F) {
- SmallVector<Instruction *, 4> Insts;
- for (Instruction &I : BB) {
- Insts.push_back(&I);
- }
+ SmallVector<Instruction *, 4> Insts(llvm::make_pointer_range(BB));
for (int j = 0; j < 10; j++) {
IB.findOrCreateSource(BB, Insts);
}
diff --git a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
index 00d45e2957dde..5607c633b7a88 100644
--- a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
+++ b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
@@ -224,9 +224,8 @@ TEST(BasicBlockDbgInfoTest, MarkerOperations) {
EXPECT_EQ(BB.size(), 1u);
EXPECT_EQ(Marker2->StoredDbgRecords.size(), 2u);
// They should also be in the correct order.
- SmallVector<DbgRecord *, 2> DVRs;
- for (DbgRecord &DVR : Marker2->getDbgRecordRange())
- DVRs.push_back(&DVR);
+ SmallVector<DbgRecord *, 2> DVRs(
+ llvm::make_pointer_range(Marker2->getDbgRecordRange()));
EXPECT_EQ(DVRs[0], DVR1);
EXPECT_EQ(DVRs[1], DVR2);
@@ -577,9 +576,8 @@ class DbgSpliceTest : public ::testing::Test {
bool CheckDVROrder(Instruction *I,
SmallVector<DbgVariableRecord *> CheckVals) {
- SmallVector<DbgRecord *> Vals;
- for (DbgRecord &D : I->getDbgRecordRange())
- Vals.push_back(&D);
+ SmallVector<DbgRecord *> Vals(
+ llvm::make_pointer_range(I->getDbgRecordRange()));
EXPECT_EQ(Vals.size(), CheckVals.size());
if (Vals.size() != CheckVals.size())
diff --git a/llvm/unittests/IR/FunctionTest.cpp b/llvm/unittests/IR/FunctionTest.cpp
index f6735fb55a6d5..7ba7584e22976 100644
--- a/llvm/unittests/IR/FunctionTest.cpp
+++ b/llvm/unittests/IR/FunctionTest.cpp
@@ -83,9 +83,7 @@ TEST(FunctionTest, stealArgumentListFrom) {
// Save arguments from F1 for later assertions. F1 won't have lazy arguments
// anymore.
- SmallVector<Argument *, 4> Args;
- for (Argument &A : F1->args())
- Args.push_back(&A);
+ SmallVector<Argument *, 4> Args(llvm::make_pointer_range(F1->args()));
EXPECT_EQ(2u, Args.size());
EXPECT_FALSE(F1->hasLazyArguments());
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
index 59498371b4d73..ea09fba85ba6a 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
@@ -157,9 +157,7 @@ define void @foo(i8 %v0) {
// of references.
template <typename RangeT>
static SmallVector<sandboxir::Instruction *> getPtrVec(RangeT Range) {
- SmallVector<sandboxir::Instruction *> PtrVec;
- for (sandboxir::Instruction &I : Range)
- PtrVec.push_back(&I);
+ SmallVector<sandboxir::Instruction *> PtrVec(llvm::make_pointer_range(Range));
return PtrVec;
}
|
@llvm/pr-subscribers-llvm-transforms Author: Kazu Hirata (kazutakahirata) ChangesFull diff: https://github.com/llvm/llvm-project/pull/136460.diff 17 Files Affected:
diff --git a/llvm/lib/Analysis/CGSCCPassManager.cpp b/llvm/lib/Analysis/CGSCCPassManager.cpp
index 1f0cda7e3f91f..30b6c1613d3ad 100644
--- a/llvm/lib/Analysis/CGSCCPassManager.cpp
+++ b/llvm/lib/Analysis/CGSCCPassManager.cpp
@@ -515,9 +515,7 @@ PreservedAnalyses CGSCCToFunctionPassAdaptor::run(LazyCallGraph::SCC &C,
FunctionAnalysisManager &FAM =
AM.getResult<FunctionAnalysisManagerCGSCCProxy>(C, CG).getManager();
- SmallVector<LazyCallGraph::Node *, 4> Nodes;
- for (LazyCallGraph::Node &N : C)
- Nodes.push_back(&N);
+ SmallVector<LazyCallGraph::Node *, 4> Nodes(llvm::make_pointer_range(C));
// The SCC may get split while we are optimizing functions due to deleting
// edges. If this happens, the current SCC can shift, so keep track of
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
index 2292590b135ea..743101c228200 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
@@ -81,11 +81,8 @@ void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
Asm.OutStreamer->switchSection(StrSection);
// Get all of the string pool entries and sort them by their offset.
- SmallVector<const StringMapEntry<EntryTy> *, 64> Entries;
- Entries.reserve(Pool.size());
-
- for (const auto &E : Pool)
- Entries.push_back(&E);
+ SmallVector<const StringMapEntry<EntryTy> *, 64> Entries(
+ llvm::make_pointer_range(Pool));
llvm::sort(Entries, [](const StringMapEntry<EntryTy> *A,
const StringMapEntry<EntryTy> *B) {
diff --git a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
index abe9ae7a3da16..44c9ec028aadb 100644
--- a/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/EHFrameSupport.cpp
@@ -643,9 +643,7 @@ EHFrameCFIBlockInspector EHFrameCFIBlockInspector::FromEdgeScan(Block &B) {
return EHFrameCFIBlockInspector(nullptr);
if (B.edges_size() == 1)
return EHFrameCFIBlockInspector(&*B.edges().begin());
- SmallVector<Edge *, 3> Es;
- for (auto &E : B.edges())
- Es.push_back(&E);
+ SmallVector<Edge *, 3> Es(llvm::make_pointer_range(B.edges()));
assert(Es.size() >= 2 && Es.size() <= 3 && "Unexpected number of edges");
llvm::sort(Es, [](const Edge *LHS, const Edge *RHS) {
return LHS->getOffset() < RHS->getOffset();
diff --git a/llvm/lib/FuzzMutate/IRMutator.cpp b/llvm/lib/FuzzMutate/IRMutator.cpp
index 06f240301322c..7e28f58046b1f 100644
--- a/llvm/lib/FuzzMutate/IRMutator.cpp
+++ b/llvm/lib/FuzzMutate/IRMutator.cpp
@@ -122,9 +122,8 @@ getInsertionRange(BasicBlock &BB) {
}
void InjectorIRStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -395,9 +394,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
return isRetVoid ? nullptr : Call;
};
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -421,9 +419,8 @@ void InsertFunctionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
void InsertCFGStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
@@ -561,9 +558,8 @@ void InsertPHIStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
}
PHI->addIncoming(Src, Pred);
}
- SmallVector<Instruction *, 32> InstsAfter;
- for (Instruction &I : getInsertionRange(BB))
- InstsAfter.push_back(&I);
+ SmallVector<Instruction *, 32> InstsAfter(
+ llvm::make_pointer_range(getInsertionRange(BB)));
IB.connectToSink(BB, InstsAfter, PHI);
}
@@ -573,9 +569,8 @@ void SinkInstructionStrategy::mutate(Function &F, RandomIRBuilder &IB) {
}
}
void SinkInstructionStrategy::mutate(BasicBlock &BB, RandomIRBuilder &IB) {
- SmallVector<Instruction *, 32> Insts;
- for (Instruction &I : getInsertionRange(BB))
- Insts.push_back(&I);
+ SmallVector<Instruction *, 32> Insts(
+ llvm::make_pointer_range(getInsertionRange(BB)));
if (Insts.size() < 1)
return;
// Choose an Instruction to mutate.
diff --git a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
index 8aea3d6f7e059..22ce5200e132d 100644
--- a/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
+++ b/llvm/lib/FuzzMutate/RandomIRBuilder.cpp
@@ -84,10 +84,8 @@ RandomIRBuilder::findOrCreateGlobalVariable(Module *M, ArrayRef<Value *> Srcs,
return Pred.matches(Srcs, PoisonValue::get(GV->getValueType()));
};
bool DidCreate = false;
- SmallVector<GlobalVariable *, 4> GlobalVars;
- for (GlobalVariable &GV : M->globals()) {
- GlobalVars.push_back(&GV);
- }
+ SmallVector<GlobalVariable *, 4> GlobalVars(
+ llvm::make_pointer_range(M->globals()));
auto RS = makeSampler(Rand, make_filter_range(GlobalVars, MatchesPred));
RS.sample(nullptr, 1);
GlobalVariable *GV = RS.getSelection();
@@ -146,10 +144,8 @@ Value *RandomIRBuilder::findOrCreateSource(BasicBlock &BB,
auto Dominators = getDominators(&BB);
std::shuffle(Dominators.begin(), Dominators.end(), Rand);
for (BasicBlock *Dom : Dominators) {
- SmallVector<Instruction *, 16> Instructions;
- for (Instruction &I : *Dom) {
- Instructions.push_back(&I);
- }
+ SmallVector<Instruction *, 16> Instructions(
+ llvm::make_pointer_range(*Dom));
auto RS =
makeSampler(Rand, make_filter_range(Instructions, MatchesPred));
// Also consider choosing no source, meaning we want a new one.
diff --git a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
index 11e2c940548e2..acc22da393ee0 100644
--- a/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
@@ -656,9 +656,7 @@ Function *AArch64Arm64ECCallLowering::buildGuestExitThunk(Function *F) {
GuardCheck->setCallingConv(CallingConv::CFGuard_Check);
Value *GuardRetVal = B.CreateBitCast(GuardCheck, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, GuardRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
@@ -715,9 +713,7 @@ AArch64Arm64ECCallLowering::buildPatchableThunk(GlobalAlias *UnmangledAlias,
Dispatch->setCallingConv(CallingConv::CFGuard_Check);
Value *DispatchRetVal = B.CreateBitCast(Dispatch, PtrTy);
- SmallVector<Value *> Args;
- for (Argument &Arg : GuestExit->args())
- Args.push_back(&Arg);
+ SmallVector<Value *> Args(llvm::make_pointer_range(GuestExit->args()));
CallInst *Call = B.CreateCall(Arm64Ty, DispatchRetVal, Args);
Call->setTailCallKind(llvm::CallInst::TCK_MustTail);
diff --git a/llvm/lib/Target/ARM/A15SDOptimizer.cpp b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
index bb9a0a2bdf98b..f6705669714da 100644
--- a/llvm/lib/Target/ARM/A15SDOptimizer.cpp
+++ b/llvm/lib/Target/ARM/A15SDOptimizer.cpp
@@ -617,10 +617,9 @@ bool A15SDOptimizer::runOnInstruction(MachineInstr *MI) {
continue;
// Collect all the uses of this MI's DPR def for updating later.
- SmallVector<MachineOperand*, 8> Uses;
Register DPRDefReg = MI->getOperand(0).getReg();
- for (MachineOperand &MO : MRI->use_operands(DPRDefReg))
- Uses.push_back(&MO);
+ SmallVector<MachineOperand *, 8> Uses(
+ llvm::make_pointer_range(MRI->use_operands(DPRDefReg)));
// We can optimize this.
unsigned NewReg = optimizeSDPattern(MI);
diff --git a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
index 6452fa05947dd..ee835dba9b020 100644
--- a/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp
@@ -554,9 +554,7 @@ static void handleByValParam(const NVPTXTargetMachine &TM, Argument *Arg) {
if (ArgUseIsReadOnly && AUC.Conditionals.empty()) {
// Convert all loads and intermediate operations to use parameter AS and
// skip creation of a local copy of the argument.
- SmallVector<Use *, 16> UsesToUpdate;
- for (Use &U : Arg->uses())
- UsesToUpdate.push_back(&U);
+ SmallVector<Use *, 16> UsesToUpdate(llvm::make_pointer_range(Arg->uses()));
Value *ArgInParamAS = new AddrSpaceCastInst(
Arg, PointerType::get(StructType->getContext(), ADDRESS_SPACE_PARAM),
diff --git a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
index a7e4487f6f5d5..6205dfedb79fb 100644
--- a/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
@@ -2399,9 +2399,8 @@ bool SPIRVEmitIntrinsics::runOnFunction(Function &Func) {
preprocessUndefs(B);
preprocessCompositeConstants(B);
- SmallVector<Instruction *> Worklist;
- for (auto &I : instructions(Func))
- Worklist.push_back(&I);
+ SmallVector<Instruction *> Worklist(
+ llvm::make_pointer_range(instructions(Func)));
applyDemangledPtrArgTypes(B);
diff --git a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
index d2de71ce10c10..c96ee6b02491a 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPreLegalizerCombiner.cpp
@@ -99,9 +99,8 @@ void applySPIRVDistance(MachineInstr &MI, MachineRegisterInfo &MRI,
SPIRVGlobalRegistry *GR =
MI.getMF()->getSubtarget<SPIRVSubtarget>().getSPIRVGlobalRegistry();
auto RemoveAllUses = [&](Register Reg) {
- SmallVector<MachineInstr *, 4> UsesToErase;
- for (auto &UseMI : MRI.use_instructions(Reg))
- UsesToErase.push_back(&UseMI);
+ SmallVector<MachineInstr *, 4> UsesToErase(
+ llvm::make_pointer_range(MRI.use_instructions(Reg)));
// calling eraseFromParent to early invalidates the iterator.
for (auto *MIToErase : UsesToErase) {
diff --git a/llvm/lib/Target/X86/X86CmovConversion.cpp b/llvm/lib/Target/X86/X86CmovConversion.cpp
index 488b3126b8609..e389ce9a296b1 100644
--- a/llvm/lib/Target/X86/X86CmovConversion.cpp
+++ b/llvm/lib/Target/X86/X86CmovConversion.cpp
@@ -190,9 +190,7 @@ bool X86CmovConverterPass::runOnMachineFunction(MachineFunction &MF) {
// execution behind a branch is better suited to handle on modern x86 chips.
if (ForceMemOperand || ForceAll) {
CmovGroups AllCmovGroups;
- SmallVector<MachineBasicBlock *, 4> Blocks;
- for (auto &MBB : MF)
- Blocks.push_back(&MBB);
+ SmallVector<MachineBasicBlock *, 4> Blocks(llvm::make_pointer_range(MF));
if (collectCmovCandidates(Blocks, AllCmovGroups, /*IncludeLoads*/ true)) {
for (auto &Group : AllCmovGroups) {
// Skip any group that doesn't do at least one memory operand cmov.
diff --git a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
index db97f7e1efcfd..70610f7c020c8 100644
--- a/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
+++ b/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
@@ -406,9 +406,7 @@ bool IndVarSimplify::rewriteNonIntegerIVs(Loop *L) {
// the SCEV routines.
BasicBlock *Header = L->getHeader();
- SmallVector<WeakTrackingVH, 8> PHIs;
- for (PHINode &PN : Header->phis())
- PHIs.push_back(&PN);
+ SmallVector<WeakTrackingVH, 8> PHIs(llvm::make_pointer_range(Header->phis()));
bool Changed = false;
for (WeakTrackingVH &PHI : PHIs)
diff --git a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
index a7cd47325845a..1928adc2d7e72 100644
--- a/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
+++ b/llvm/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
@@ -63,10 +63,7 @@ class TrivialModuleBuilder {
Function *insertSimpleCallFunction(Module *M, Function *Callee) {
Function *Result = startFunction(M, Callee->getFunctionType(), "caller");
- SmallVector<Value*, 1> CallArgs;
-
- for (Argument &A : Result->args())
- CallArgs.push_back(&A);
+ SmallVector<Value *, 1> CallArgs(llvm::make_pointer_range(Result->args()));
Value *ReturnCode = Builder.CreateCall(Callee, CallArgs);
Builder.CreateRet(ReturnCode);
diff --git a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
index 02d87251a428c..b7f5234ffcda1 100644
--- a/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
+++ b/llvm/unittests/FuzzMutate/RandomIRBuilderTest.cpp
@@ -597,10 +597,7 @@ TEST(RandomIRBuilderTest, SrcAndSinkWOrphanBlock) {
std::unique_ptr<Module> M = parseAssembly(Source, Ctx);
Function &F = *M->getFunction("test");
for (BasicBlock &BB : F) {
- SmallVector<Instruction *, 4> Insts;
- for (Instruction &I : BB) {
- Insts.push_back(&I);
- }
+ SmallVector<Instruction *, 4> Insts(llvm::make_pointer_range(BB));
for (int j = 0; j < 10; j++) {
IB.findOrCreateSource(BB, Insts);
}
diff --git a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
index 00d45e2957dde..5607c633b7a88 100644
--- a/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
+++ b/llvm/unittests/IR/BasicBlockDbgInfoTest.cpp
@@ -224,9 +224,8 @@ TEST(BasicBlockDbgInfoTest, MarkerOperations) {
EXPECT_EQ(BB.size(), 1u);
EXPECT_EQ(Marker2->StoredDbgRecords.size(), 2u);
// They should also be in the correct order.
- SmallVector<DbgRecord *, 2> DVRs;
- for (DbgRecord &DVR : Marker2->getDbgRecordRange())
- DVRs.push_back(&DVR);
+ SmallVector<DbgRecord *, 2> DVRs(
+ llvm::make_pointer_range(Marker2->getDbgRecordRange()));
EXPECT_EQ(DVRs[0], DVR1);
EXPECT_EQ(DVRs[1], DVR2);
@@ -577,9 +576,8 @@ class DbgSpliceTest : public ::testing::Test {
bool CheckDVROrder(Instruction *I,
SmallVector<DbgVariableRecord *> CheckVals) {
- SmallVector<DbgRecord *> Vals;
- for (DbgRecord &D : I->getDbgRecordRange())
- Vals.push_back(&D);
+ SmallVector<DbgRecord *> Vals(
+ llvm::make_pointer_range(I->getDbgRecordRange()));
EXPECT_EQ(Vals.size(), CheckVals.size());
if (Vals.size() != CheckVals.size())
diff --git a/llvm/unittests/IR/FunctionTest.cpp b/llvm/unittests/IR/FunctionTest.cpp
index f6735fb55a6d5..7ba7584e22976 100644
--- a/llvm/unittests/IR/FunctionTest.cpp
+++ b/llvm/unittests/IR/FunctionTest.cpp
@@ -83,9 +83,7 @@ TEST(FunctionTest, stealArgumentListFrom) {
// Save arguments from F1 for later assertions. F1 won't have lazy arguments
// anymore.
- SmallVector<Argument *, 4> Args;
- for (Argument &A : F1->args())
- Args.push_back(&A);
+ SmallVector<Argument *, 4> Args(llvm::make_pointer_range(F1->args()));
EXPECT_EQ(2u, Args.size());
EXPECT_FALSE(F1->hasLazyArguments());
diff --git a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
index 59498371b4d73..ea09fba85ba6a 100644
--- a/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
+++ b/llvm/unittests/Transforms/Vectorize/SandboxVectorizer/IntervalTest.cpp
@@ -157,9 +157,7 @@ define void @foo(i8 %v0) {
// of references.
template <typename RangeT>
static SmallVector<sandboxir::Instruction *> getPtrVec(RangeT Range) {
- SmallVector<sandboxir::Instruction *> PtrVec;
- for (sandboxir::Instruction &I : Range)
- PtrVec.push_back(&I);
+ SmallVector<sandboxir::Instruction *> PtrVec(llvm::make_pointer_range(Range));
return PtrVec;
}
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/186/builds/8359 Here is the relevant piece of the build log for the reference
|
No description provided.