-
Notifications
You must be signed in to change notification settings - Fork 15.3k
[CodeGen] Use range-based for loops (NFC) #145142
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
Merged
kazutakahirata
merged 1 commit into
llvm:main
from
kazutakahirata:cleanup_20250620_range_for_clang_CodeGen
Jun 21, 2025
Merged
[CodeGen] Use range-based for loops (NFC) #145142
kazutakahirata
merged 1 commit into
llvm:main
from
kazutakahirata:cleanup_20250620_range_for_clang_CodeGen
Jun 21, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Member
|
@llvm/pr-subscribers-clang-codegen @llvm/pr-subscribers-clang Author: Kazu Hirata (kazutakahirata) ChangesFull diff: https://github.com/llvm/llvm-project/pull/145142.diff 8 Files Affected:
diff --git a/clang/include/clang/CodeGen/CGFunctionInfo.h b/clang/include/clang/CodeGen/CGFunctionInfo.h
index 040ee025afaa8..50be51769f1a8 100644
--- a/clang/include/clang/CodeGen/CGFunctionInfo.h
+++ b/clang/include/clang/CodeGen/CGFunctionInfo.h
@@ -828,10 +828,8 @@ class CGFunctionInfo final
ID.AddInteger(paramInfo.getOpaqueValue());
}
resultType.Profile(ID);
- for (ArrayRef<CanQualType>::iterator
- i = argTypes.begin(), e = argTypes.end(); i != e; ++i) {
- i->Profile(ID);
- }
+ for (const CanQualType &argType : argTypes)
+ argType.Profile(ID);
}
};
diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index 4173355491fd4..8ccc37ef98a74 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -4168,8 +4168,7 @@ void CGOpenMPRuntime::emitDepobjElements(CodeGenFunction &CGF,
CGF, cast_or_null<OMPIteratorExpr>(
Data.IteratorExpr ? Data.IteratorExpr->IgnoreParenImpCasts()
: nullptr));
- for (unsigned I = 0, End = Data.DepExprs.size(); I < End; ++I) {
- const Expr *E = Data.DepExprs[I];
+ for (const Expr *E : Data.DepExprs) {
llvm::Value *NumDeps;
LValue Base;
LValue DepobjLVal = CGF.EmitLValue(E->IgnoreParenImpCasts());
@@ -4289,31 +4288,26 @@ std::pair<llvm::Value *, Address> CGOpenMPRuntime::emitDependClause(
/*isSigned=*/false);
}
unsigned Pos = 0;
- for (unsigned I = 0, End = Dependencies.size(); I < End; ++I) {
- if (Dependencies[I].DepKind == OMPC_DEPEND_depobj ||
- Dependencies[I].IteratorExpr)
+ for (const OMPTaskDataTy::DependData &Dep : Dependencies) {
+ if (Dep.DepKind == OMPC_DEPEND_depobj || Dep.IteratorExpr)
continue;
- emitDependData(CGF, KmpDependInfoTy, &Pos, Dependencies[I],
- DependenciesArray);
+ emitDependData(CGF, KmpDependInfoTy, &Pos, Dep, DependenciesArray);
}
// Copy regular dependencies with iterators.
LValue PosLVal = CGF.MakeAddrLValue(
CGF.CreateMemTemp(C.getSizeType(), "dep.counter.addr"), C.getSizeType());
CGF.EmitStoreOfScalar(llvm::ConstantInt::get(CGF.SizeTy, Pos), PosLVal);
- for (unsigned I = 0, End = Dependencies.size(); I < End; ++I) {
- if (Dependencies[I].DepKind == OMPC_DEPEND_depobj ||
- !Dependencies[I].IteratorExpr)
+ for (const OMPTaskDataTy::DependData &Dep : Dependencies) {
+ if (Dep.DepKind == OMPC_DEPEND_depobj || !Dep.IteratorExpr)
continue;
- emitDependData(CGF, KmpDependInfoTy, &PosLVal, Dependencies[I],
- DependenciesArray);
+ emitDependData(CGF, KmpDependInfoTy, &PosLVal, Dep, DependenciesArray);
}
// Copy final depobj arrays without iterators.
if (HasDepobjDeps) {
- for (unsigned I = 0, End = Dependencies.size(); I < End; ++I) {
- if (Dependencies[I].DepKind != OMPC_DEPEND_depobj)
+ for (const OMPTaskDataTy::DependData &Dep : Dependencies) {
+ if (Dep.DepKind != OMPC_DEPEND_depobj)
continue;
- emitDepobjElements(CGF, KmpDependInfoTy, PosLVal, Dependencies[I],
- DependenciesArray);
+ emitDepobjElements(CGF, KmpDependInfoTy, PosLVal, Dep, DependenciesArray);
}
}
DependenciesArray = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
diff --git a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
index 232e2d8b43ca1..e1310aed818ad 100644
--- a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -972,18 +972,16 @@ void CGRecordLowering::determinePacked(bool NVBaseType) {
CharUnits NVAlignment = CharUnits::One();
CharUnits NVSize =
!NVBaseType && RD ? Layout.getNonVirtualSize() : CharUnits::Zero();
- for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
- MemberEnd = Members.end();
- Member != MemberEnd; ++Member) {
- if (!Member->Data)
+ for (const MemberInfo &Member : Members) {
+ if (!Member.Data)
continue;
// If any member falls at an offset that it not a multiple of its alignment,
// then the entire record must be packed.
- if (Member->Offset % getAlignment(Member->Data))
+ if (Member.Offset % getAlignment(Member.Data))
Packed = true;
- if (Member->Offset < NVSize)
- NVAlignment = std::max(NVAlignment, getAlignment(Member->Data));
- Alignment = std::max(Alignment, getAlignment(Member->Data));
+ if (Member.Offset < NVSize)
+ NVAlignment = std::max(NVAlignment, getAlignment(Member.Data));
+ Alignment = std::max(Alignment, getAlignment(Member.Data));
}
// If the size of the record (the capstone's offset) is not a multiple of the
// record's alignment, it must be packed.
@@ -1002,45 +1000,39 @@ void CGRecordLowering::determinePacked(bool NVBaseType) {
void CGRecordLowering::insertPadding() {
std::vector<std::pair<CharUnits, CharUnits> > Padding;
CharUnits Size = CharUnits::Zero();
- for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
- MemberEnd = Members.end();
- Member != MemberEnd; ++Member) {
- if (!Member->Data)
+ for (const MemberInfo &Member : Members) {
+ if (!Member.Data)
continue;
- CharUnits Offset = Member->Offset;
+ CharUnits Offset = Member.Offset;
assert(Offset >= Size);
// Insert padding if we need to.
if (Offset !=
- Size.alignTo(Packed ? CharUnits::One() : getAlignment(Member->Data)))
+ Size.alignTo(Packed ? CharUnits::One() : getAlignment(Member.Data)))
Padding.push_back(std::make_pair(Size, Offset - Size));
- Size = Offset + getSize(Member->Data);
+ Size = Offset + getSize(Member.Data);
}
if (Padding.empty())
return;
// Add the padding to the Members list and sort it.
- for (std::vector<std::pair<CharUnits, CharUnits> >::const_iterator
- Pad = Padding.begin(), PadEnd = Padding.end();
- Pad != PadEnd; ++Pad)
- Members.push_back(StorageInfo(Pad->first, getByteArrayType(Pad->second)));
+ for (const auto &Pad : Padding)
+ Members.push_back(StorageInfo(Pad.first, getByteArrayType(Pad.second)));
llvm::stable_sort(Members);
}
void CGRecordLowering::fillOutputFields() {
- for (std::vector<MemberInfo>::const_iterator Member = Members.begin(),
- MemberEnd = Members.end();
- Member != MemberEnd; ++Member) {
- if (Member->Data)
- FieldTypes.push_back(Member->Data);
- if (Member->Kind == MemberInfo::Field) {
- if (Member->FD)
- Fields[Member->FD->getCanonicalDecl()] = FieldTypes.size() - 1;
+ for (const MemberInfo &Member : Members) {
+ if (Member.Data)
+ FieldTypes.push_back(Member.Data);
+ if (Member.Kind == MemberInfo::Field) {
+ if (Member.FD)
+ Fields[Member.FD->getCanonicalDecl()] = FieldTypes.size() - 1;
// A field without storage must be a bitfield.
- if (!Member->Data)
- setBitFieldInfo(Member->FD, Member->Offset, FieldTypes.back());
- } else if (Member->Kind == MemberInfo::Base)
- NonVirtualBases[Member->RD] = FieldTypes.size() - 1;
- else if (Member->Kind == MemberInfo::VBase)
- VirtualBases[Member->RD] = FieldTypes.size() - 1;
+ if (!Member.Data)
+ setBitFieldInfo(Member.FD, Member.Offset, FieldTypes.back());
+ } else if (Member.Kind == MemberInfo::Base)
+ NonVirtualBases[Member.RD] = FieldTypes.size() - 1;
+ else if (Member.Kind == MemberInfo::VBase)
+ VirtualBases[Member.RD] = FieldTypes.size() - 1;
}
}
@@ -1224,20 +1216,18 @@ void CGRecordLayout::print(raw_ostream &OS) const {
// Print bit-field infos in declaration order.
std::vector<std::pair<unsigned, const CGBitFieldInfo*> > BFIs;
- for (llvm::DenseMap<const FieldDecl*, CGBitFieldInfo>::const_iterator
- it = BitFields.begin(), ie = BitFields.end();
- it != ie; ++it) {
- const RecordDecl *RD = it->first->getParent();
+ for (const auto &BitField : BitFields) {
+ const RecordDecl *RD = BitField.first->getParent();
unsigned Index = 0;
- for (RecordDecl::field_iterator
- it2 = RD->field_begin(); *it2 != it->first; ++it2)
+ for (RecordDecl::field_iterator it2 = RD->field_begin();
+ *it2 != BitField.first; ++it2)
++Index;
- BFIs.push_back(std::make_pair(Index, &it->second));
+ BFIs.push_back(std::make_pair(Index, &BitField.second));
}
llvm::array_pod_sort(BFIs.begin(), BFIs.end());
- for (unsigned i = 0, e = BFIs.size(); i != e; ++i) {
+ for (auto &BFI : BFIs) {
OS.indent(4);
- BFIs[i].second->print(OS);
+ BFI.second->print(OS);
OS << "\n";
}
diff --git a/clang/lib/CodeGen/CGStmt.cpp b/clang/lib/CodeGen/CGStmt.cpp
index 8742f8e0fc04a..e0650067b9547 100644
--- a/clang/lib/CodeGen/CGStmt.cpp
+++ b/clang/lib/CodeGen/CGStmt.cpp
@@ -757,10 +757,9 @@ void CodeGenFunction::LexicalScope::rescopeLabels() {
= CGF.EHStack.getInnermostNormalCleanup();
// Change the scope depth of all the labels.
- for (SmallVectorImpl<const LabelDecl*>::const_iterator
- i = Labels.begin(), e = Labels.end(); i != e; ++i) {
- assert(CGF.LabelMap.count(*i));
- JumpDest &dest = CGF.LabelMap.find(*i)->second;
+ for (const LabelDecl *Label : Labels) {
+ assert(CGF.LabelMap.count(Label));
+ JumpDest &dest = CGF.LabelMap.find(Label)->second;
assert(dest.getScopeDepth().isValid());
assert(innermostScope.encloses(dest.getScopeDepth()));
dest.setScopeDepth(innermostScope);
@@ -2302,8 +2301,8 @@ void CodeGenFunction::EmitSwitchStmt(const SwitchStmt &S) {
// Okay, we can dead code eliminate everything except this case. Emit the
// specified series of statements and we're good.
- for (unsigned i = 0, e = CaseStmts.size(); i != e; ++i)
- EmitStmt(CaseStmts[i]);
+ for (const Stmt *CaseStmt : CaseStmts)
+ EmitStmt(CaseStmt);
incrementProfileCounter(&S);
PGO->markStmtMaybeUsed(S.getBody());
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index 514cc1d9015ee..a181559834296 100644
--- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1836,9 +1836,9 @@ llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
// Create all the vftables at once in order to make sure each vftable has
// a unique mangled name.
llvm::StringSet<> ObservedMangledNames;
- for (size_t J = 0, F = VFPtrs.size(); J != F; ++J) {
+ for (const auto &VFPtr : VFPtrs) {
SmallString<256> Name;
- mangleVFTableName(getMangleContext(), RD, *VFPtrs[J], Name);
+ mangleVFTableName(getMangleContext(), RD, *VFPtr, Name);
if (!ObservedMangledNames.insert(Name.str()).second)
llvm_unreachable("Already saw this mangling before?");
}
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp
index 09a7d79ae4afb..8c1fee8c974f1 100644
--- a/clang/lib/CodeGen/ModuleBuilder.cpp
+++ b/clang/lib/CodeGen/ModuleBuilder.cpp
@@ -186,8 +186,8 @@ namespace {
HandlingTopLevelDeclRAII HandlingDecl(*this);
// Make sure to emit all elements of a Decl.
- for (DeclGroupRef::iterator I = DG.begin(), E = DG.end(); I != E; ++I)
- Builder->EmitTopLevelDecl(*I);
+ for (auto &I : DG)
+ Builder->EmitTopLevelDecl(I);
return true;
}
diff --git a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp
index dab311903f6dd..6738d4be6dd21 100644
--- a/clang/lib/CodeGen/TargetBuiltins/ARM.cpp
+++ b/clang/lib/CodeGen/TargetBuiltins/ARM.cpp
@@ -4560,10 +4560,10 @@ Value *CodeGenFunction::EmitAArch64SVEBuiltinExpr(unsigned BuiltinID,
Ops.insert(&Ops[1], Builder.getInt32(/*SV_ALL*/ 31));
// Predicates must match the main datatype.
- for (unsigned i = 0, e = Ops.size(); i != e; ++i)
- if (auto PredTy = dyn_cast<llvm::VectorType>(Ops[i]->getType()))
+ for (Value *&Op : Ops)
+ if (auto PredTy = dyn_cast<llvm::VectorType>(Op->getType()))
if (PredTy->getElementType()->isIntegerTy(1))
- Ops[i] = EmitSVEPredicateCast(Ops[i], getSVEType(TypeFlags));
+ Op = EmitSVEPredicateCast(Op, getSVEType(TypeFlags));
// Splat scalar operand to vector (intrinsics with _n infix)
if (TypeFlags.hasSplatOperand()) {
@@ -4936,10 +4936,10 @@ Value *CodeGenFunction::EmitAArch64SMEBuiltinExpr(unsigned BuiltinID,
}
// Predicates must match the main datatype.
- for (unsigned i = 0, e = Ops.size(); i != e; ++i)
- if (auto PredTy = dyn_cast<llvm::VectorType>(Ops[i]->getType()))
+ for (Value *&Op : Ops)
+ if (auto PredTy = dyn_cast<llvm::VectorType>(Op->getType()))
if (PredTy->getElementType()->isIntegerTy(1))
- Ops[i] = EmitSVEPredicateCast(Ops[i], getSVEType(TypeFlags));
+ Op = EmitSVEPredicateCast(Op, getSVEType(TypeFlags));
Function *F =
TypeFlags.isOverloadNone()
@@ -8036,8 +8036,8 @@ BuildVector(ArrayRef<llvm::Value*> Ops) {
// If this is a constant vector, create a ConstantVector.
if (AllConstants) {
SmallVector<llvm::Constant*, 16> CstOps;
- for (unsigned i = 0, e = Ops.size(); i != e; ++i)
- CstOps.push_back(cast<Constant>(Ops[i]));
+ for (llvm::Value *Op : Ops)
+ CstOps.push_back(cast<Constant>(Op));
return llvm::ConstantVector::get(CstOps);
}
diff --git a/clang/lib/CodeGen/Targets/X86.cpp b/clang/lib/CodeGen/Targets/X86.cpp
index b36a6e1396653..0f59caac2323e 100644
--- a/clang/lib/CodeGen/Targets/X86.cpp
+++ b/clang/lib/CodeGen/Targets/X86.cpp
@@ -1462,9 +1462,8 @@ class X86_64TargetCodeGenInfo : public TargetCodeGenInfo {
// defines varargs anyway.
if (fnType->getCallConv() == CC_C) {
bool HasAVXType = false;
- for (CallArgList::const_iterator
- it = args.begin(), ie = args.end(); it != ie; ++it) {
- if (getABIInfo<X86_64ABIInfo>().isPassedUsingAVXType(it->Ty)) {
+ for (const CallArg &arg : args) {
+ if (getABIInfo<X86_64ABIInfo>().isPassedUsingAVXType(arg.Ty)) {
HasAVXType = true;
break;
}
|
shiltian
approved these changes
Jun 21, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
backend:X86
clang:codegen
IR generation bugs: mangling, exceptions, etc.
clang:openmp
OpenMP related changes to Clang
clang
Clang issues not falling into any other category
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.