https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/145142
None >From 4f17684775a8fba436a1ffa1af309b5739010951 Mon Sep 17 00:00:00 2001 From: Kazu Hirata <k...@google.com> Date: Thu, 19 Jun 2025 15:11:29 -0700 Subject: [PATCH] [CodeGen] Use range-based for loops (NFC) --- clang/include/clang/CodeGen/CGFunctionInfo.h | 6 +- clang/lib/CodeGen/CGOpenMPRuntime.cpp | 26 +++---- clang/lib/CodeGen/CGRecordLayoutBuilder.cpp | 74 +++++++++----------- clang/lib/CodeGen/CGStmt.cpp | 11 ++- clang/lib/CodeGen/MicrosoftCXXABI.cpp | 4 +- clang/lib/CodeGen/ModuleBuilder.cpp | 4 +- clang/lib/CodeGen/TargetBuiltins/ARM.cpp | 16 ++--- clang/lib/CodeGen/Targets/X86.cpp | 5 +- 8 files changed, 63 insertions(+), 83 deletions(-) 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; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits