On Sat, Sep 10, 2022 at 6:01 PM Kazu Hirata <k...@google.com> wrote: > > Thank you Aaron and David for your inputs. > > First and foremost, I apologize if I made your job harder by increasing the > number of commits you have to peel to get to the real author.
No worries at all! It's all a tradeoff. :-) > I hear that we are moving toward github pull requests. A casual search tells > me that there are some add-ons to integrate clang-tidy into the code review > platform, so I am hoping we can use something like that to get each patch > right first time. That would be lovely (though we could do the same with our current precommit CI pipeline; there's no need for us to wait for a switch to GitHub). > Going forward, I'll take git churn and the difficulty of backsliding as big > factors in doing future clenaups. For example, it's probably a good idea to > delete a function that hasn't been used for many years (excluding dump > functions and such). Library standardization (like the recent removal of > llvm::array_lengthof in favor of std::size) is less good in terms of git > churn, but it's very unlikely for somebody to re-introduce > llvm::array_lengthof. Thanks! If we're going to err on one side or the other, I think it's better to err on the side that leaves us with the best code base because that's what everyone interacts with the most. But I also like David's idea of starting a community discussion to see where folks want to draw the line these days. Perhaps the only kind of sweeping changes we want to avoid are whitespace/line ending/formatting changes and we're fine with other kinds of sweeping improvements. ~Aaron > > Thanks, > > Kazu Hirata > > > On Fri, Sep 9, 2022 at 5:27 AM Aaron Ballman <aa...@aaronballman.com> wrote: >> >> On Thu, Sep 8, 2022 at 12:37 PM David Blaikie <dblai...@gmail.com> wrote: >> > >> > Mixed feelings here - Kazu's made a lot of cleanup/stylistic changes >> > across the LLVM project for a while now, most, at least I think, are >> > quite welcome (things like switching to range-based-for, std >> > algorithms over llvm ones, llvm algorithms over manually written >> > loops, etc). But yeah, there's some threshold below which the churn >> > might not be worth the benefit - especially if the change doesn't come >> > along with tooling to enforce the invariant is maintained in the >> > future (if it's easy to make mistakes like this one - we'll regress it >> > and need to do cleanup again in the future) >> >> Thanks for speaking up, because I also waffled a bit on whether I >> called this out or not. :-) >> >> > Also, for this particular one, I wonder if in some cases this sort of >> > automatic transformation isn't ideal - if something is a pointer, but >> > that's an implementation detail, rather than an intentional feature of >> > an API (eg: the pointer-ness might be hidden behind a typedef and used >> > as an opaque handle, without any dereferencing, etc) >> >> Agreed. >> >> > I think it'd be really good to have some discussion on discourse about >> > if/how some of these cleanups could be formed into a way to >> > enforce/encourage the invariant to be maintained going forward - >> > clang-tidy (assuming that's the basis for the tooling Kazu's using to >> > make these changes in the first place) integration into the LLVM build >> > in some way, etc. >> >> I think that's a good idea! We want to encourage cleanups, but we >> don't want to encourage churn, and I think it's somewhat subjective >> where to draw that line. Having some more community awareness around >> that would be beneficial. I'm especially interested in how we balance >> between making incremental style improvements to the project and >> keeping our git blame logs useful. I'm seeing a lot more git blames >> that require several steps to get to an interesting commit because of >> the number of NFCs and reverts/recommits. Unfortunately, the tooling >> around viewing git blames of large files (like Clang tends to have) >> makes these sorts of commits surprisingly painful when you do have to >> dig to see where changes came from. (So I find myself having far less >> concern when TransGCAttrs.cpp (~350LoC) gets a cleanup like this >> compared to SemaExpr.cpp (~21kLoC), which suggests to me we should >> maybe strongly consider splitting more of these massive files up so >> that churn is less painful.) >> >> > & yeah, adding the `const` too if/when that's relevant would've >> > improved the quality/value/justification for a cleanup change like >> > this. >> >> It also would have matched our coding style. (We document it somewhat >> poorly as an example showing "observe" and "change", but reviewers who >> call for cleanups with auto are pretty consistent about asking to make >> qualifiers explicit.) >> >> ~Aaron >> >> > >> > On Sun, Sep 4, 2022 at 5:58 AM Aaron Ballman via cfe-commits >> > <cfe-commits@lists.llvm.org> wrote: >> > > >> > > FWIW, sweeping NFC changes like this cause a fair amount of code churn >> > > (which makes tools like git blame a bit harder to use) for a >> > > relatively small improvement to code readability, which is why our >> > > developer policy asks that you "Avoid committing formatting- or >> > > whitespace-only changes outside of code you plan to make subsequent >> > > changes to." In the future, I'd caution against doing such large-scale >> > > sweeping NFC changes outside of areas you're actively working on >> > > unless there's some wider discussion with the community first. That >> > > said, all of your changes are all improvements, so thank you for them! >> > > >> > > Some of the changes you made would have ideally made it more clear >> > > when the deduced type is a pointer to a const object instead of hiding >> > > the qualifier behind the deduction. I've pointed out a couple such >> > > places below, but don't feel obligated to go back and change anything >> > > unless you're going to be touching other code in the area. >> > > >> > > ~Aaron >> > > >> > > >> > > On Sun, Sep 4, 2022 at 2:27 AM Kazu Hirata via cfe-commits >> > > <cfe-commits@lists.llvm.org> wrote: >> > > > >> > > > >> > > > Author: Kazu Hirata >> > > > Date: 2022-09-03T23:27:27-07:00 >> > > > New Revision: b7a7aeee90cffefd0f73b8d9f44ab4d1d5123d05 >> > > > >> > > > URL: >> > > > https://github.com/llvm/llvm-project/commit/b7a7aeee90cffefd0f73b8d9f44ab4d1d5123d05 >> > > > DIFF: >> > > > https://github.com/llvm/llvm-project/commit/b7a7aeee90cffefd0f73b8d9f44ab4d1d5123d05.diff >> > > > >> > > > LOG: [clang] Qualify auto in range-based for loops (NFC) >> > > > >> > > > Added: >> > > > >> > > > >> > > > Modified: >> > > > clang/lib/ARCMigrate/ObjCMT.cpp >> > > > clang/lib/ARCMigrate/TransGCAttrs.cpp >> > > > clang/lib/AST/ASTContext.cpp >> > > > clang/lib/AST/ASTImporter.cpp >> > > > clang/lib/AST/Decl.cpp >> > > > clang/lib/AST/DeclObjC.cpp >> > > > clang/lib/AST/ODRHash.cpp >> > > > clang/lib/AST/OpenMPClause.cpp >> > > > clang/lib/AST/StmtProfile.cpp >> > > > clang/lib/AST/Type.cpp >> > > > clang/lib/Analysis/CFG.cpp >> > > > clang/lib/Analysis/ThreadSafetyCommon.cpp >> > > > clang/lib/CodeGen/CGBlocks.cpp >> > > > clang/lib/CodeGen/CGCall.cpp >> > > > clang/lib/CodeGen/CGClass.cpp >> > > > clang/lib/CodeGen/CGDebugInfo.cpp >> > > > clang/lib/CodeGen/CGDeclCXX.cpp >> > > > clang/lib/CodeGen/CGExpr.cpp >> > > > clang/lib/CodeGen/CGObjCGNU.cpp >> > > > clang/lib/CodeGen/CGObjCMac.cpp >> > > > clang/lib/CodeGen/CodeGenFunction.cpp >> > > > clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp >> > > > clang/lib/CodeGen/SwiftCallingConv.cpp >> > > > clang/lib/Driver/Compilation.cpp >> > > > clang/lib/Driver/Driver.cpp >> > > > clang/lib/Driver/ToolChains/Clang.cpp >> > > > clang/lib/Driver/ToolChains/CommonArgs.cpp >> > > > clang/lib/Driver/ToolChains/Gnu.cpp >> > > > clang/lib/Driver/ToolChains/HIPAMD.cpp >> > > > clang/lib/Format/Format.cpp >> > > > clang/lib/Frontend/FrontendActions.cpp >> > > > clang/lib/Index/USRGeneration.cpp >> > > > clang/lib/Sema/IdentifierResolver.cpp >> > > > clang/lib/Sema/Sema.cpp >> > > > clang/lib/Sema/SemaCodeComplete.cpp >> > > > clang/lib/Sema/SemaDecl.cpp >> > > > clang/lib/Sema/SemaDeclAttr.cpp >> > > > clang/lib/Sema/SemaDeclCXX.cpp >> > > > clang/lib/Sema/SemaDeclObjC.cpp >> > > > clang/lib/Sema/SemaExpr.cpp >> > > > clang/lib/Sema/SemaExprCXX.cpp >> > > > clang/lib/Sema/SemaInit.cpp >> > > > clang/lib/Sema/SemaLambda.cpp >> > > > clang/lib/Sema/SemaLookup.cpp >> > > > clang/lib/Sema/SemaObjCProperty.cpp >> > > > clang/lib/Sema/SemaOpenMP.cpp >> > > > clang/lib/Sema/SemaOverload.cpp >> > > > clang/lib/Sema/SemaTemplateDeduction.cpp >> > > > clang/lib/Sema/SemaTemplateInstantiateDecl.cpp >> > > > clang/lib/Serialization/ASTReader.cpp >> > > > clang/lib/Serialization/ASTWriterDecl.cpp >> > > > clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp >> > > > clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp >> > > > clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >> > > > clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp >> > > > >> > > > clang/lib/StaticAnalyzer/Checkers/WebKit/NoUncountedMembersChecker.cpp >> > > > clang/lib/StaticAnalyzer/Core/CallEvent.cpp >> > > > clang/lib/StaticAnalyzer/Core/CoreEngine.cpp >> > > > clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp >> > > > clang/lib/Tooling/Tooling.cpp >> > > > >> > > > Removed: >> > > > >> > > > >> > > > >> > > > ################################################################################ >> > > > diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp >> > > > b/clang/lib/ARCMigrate/ObjCMT.cpp >> > > > index 26f751b77f86a..fe0ce4c5cdc3a 100644 >> > > > --- a/clang/lib/ARCMigrate/ObjCMT.cpp >> > > > +++ b/clang/lib/ARCMigrate/ObjCMT.cpp >> > > > @@ -792,7 +792,7 @@ static bool UseNSOptionsMacro(Preprocessor &PP, >> > > > ASTContext &Ctx, >> > > > bool PowerOfTwo = true; >> > > > bool AllHexdecimalEnumerator = true; >> > > > uint64_t MaxPowerOfTwoVal = 0; >> > > > - for (auto Enumerator : EnumDcl->enumerators()) { >> > > > + for (auto *Enumerator : EnumDcl->enumerators()) { >> > > > const Expr *InitExpr = Enumerator->getInitExpr(); >> > > > if (!InitExpr) { >> > > > PowerOfTwo = false; >> > > > >> > > > diff --git a/clang/lib/ARCMigrate/TransGCAttrs.cpp >> > > > b/clang/lib/ARCMigrate/TransGCAttrs.cpp >> > > > index 99a61e0842a76..b94aee2de573e 100644 >> > > > --- a/clang/lib/ARCMigrate/TransGCAttrs.cpp >> > > > +++ b/clang/lib/ARCMigrate/TransGCAttrs.cpp >> > > > @@ -158,7 +158,7 @@ class GCAttrsCollector : public >> > > > RecursiveASTVisitor<GCAttrsCollector> { >> > > > if (!D) >> > > > return false; >> > > > >> > > > - for (auto I : D->redecls()) >> > > > + for (auto *I : D->redecls()) >> > > > if (!isInMainFile(I->getLocation())) >> > > > return false; >> > > > >> > > > >> > > > diff --git a/clang/lib/AST/ASTContext.cpp >> > > > b/clang/lib/AST/ASTContext.cpp >> > > > index 52e7eeca665ab..20fcc8fea4b79 100644 >> > > > --- a/clang/lib/AST/ASTContext.cpp >> > > > +++ b/clang/lib/AST/ASTContext.cpp >> > > > @@ -7568,7 +7568,7 @@ std::string >> > > > ASTContext::getObjCEncodingForBlock(const BlockExpr *Expr) const { >> > > > // FIXME: There might(should) be a better way of doing this >> > > > computation! >> > > > CharUnits PtrSize = getTypeSizeInChars(VoidPtrTy); >> > > > CharUnits ParmOffset = PtrSize; >> > > > - for (auto PI : Decl->parameters()) { >> > > > + for (auto *PI : Decl->parameters()) { >> > > > QualType PType = PI->getType(); >> > > > CharUnits sz = getObjCEncodingTypeSize(PType); >> > > > if (sz.isZero()) >> > > > @@ -7583,7 +7583,7 @@ std::string >> > > > ASTContext::getObjCEncodingForBlock(const BlockExpr *Expr) const { >> > > > >> > > > // Argument types. >> > > > ParmOffset = PtrSize; >> > > > - for (auto PVDecl : Decl->parameters()) { >> > > > + for (auto *PVDecl : Decl->parameters()) { >> > > > QualType PType = PVDecl->getOriginalType(); >> > > > if (const auto *AT = >> > > > dyn_cast<ArrayType>(PType->getCanonicalTypeInternal())) { >> > > > @@ -7612,7 +7612,7 @@ ASTContext::getObjCEncodingForFunctionDecl(const >> > > > FunctionDecl *Decl) const { >> > > > getObjCEncodingForType(Decl->getReturnType(), S); >> > > > CharUnits ParmOffset; >> > > > // Compute size of all parameters. >> > > > - for (auto PI : Decl->parameters()) { >> > > > + for (auto *PI : Decl->parameters()) { >> > > > QualType PType = PI->getType(); >> > > > CharUnits sz = getObjCEncodingTypeSize(PType); >> > > > if (sz.isZero()) >> > > > @@ -7626,7 +7626,7 @@ ASTContext::getObjCEncodingForFunctionDecl(const >> > > > FunctionDecl *Decl) const { >> > > > ParmOffset = CharUnits::Zero(); >> > > > >> > > > // Argument types. >> > > > - for (auto PVDecl : Decl->parameters()) { >> > > > + for (auto *PVDecl : Decl->parameters()) { >> > > >> > > Because `Decl` is `const FunctionDecl *`, the parameters should >> > > (notionally at least) be const as well. >> > > >> > > > QualType PType = PVDecl->getOriginalType(); >> > > > if (const auto *AT = >> > > > dyn_cast<ArrayType>(PType->getCanonicalTypeInternal())) { >> > > > @@ -9724,7 +9724,7 @@ void getIntersectionOfProtocols(ASTContext >> > > > &Context, >> > > > llvm::SmallPtrSet<ObjCProtocolDecl *, 8> LHSProtocolSet; >> > > > >> > > > // Start with the protocol qualifiers. >> > > > - for (auto proto : LHS->quals()) { >> > > > + for (auto *proto : LHS->quals()) { >> > > > Context.CollectInheritedProtocols(proto, LHSProtocolSet); >> > > > } >> > > > >> > > > @@ -9735,7 +9735,7 @@ void getIntersectionOfProtocols(ASTContext >> > > > &Context, >> > > > llvm::SmallPtrSet<ObjCProtocolDecl *, 8> RHSProtocolSet; >> > > > >> > > > // Start with the protocol qualifiers. >> > > > - for (auto proto : RHS->quals()) { >> > > > + for (auto *proto : RHS->quals()) { >> > > > Context.CollectInheritedProtocols(proto, RHSProtocolSet); >> > > > } >> > > > >> > > > @@ -9743,7 +9743,7 @@ void getIntersectionOfProtocols(ASTContext >> > > > &Context, >> > > > Context.CollectInheritedProtocols(RHS->getInterface(), >> > > > RHSProtocolSet); >> > > > >> > > > // Compute the intersection of the collected protocol sets. >> > > > - for (auto proto : LHSProtocolSet) { >> > > > + for (auto *proto : LHSProtocolSet) { >> > > > if (RHSProtocolSet.count(proto)) >> > > > IntersectionSet.push_back(proto); >> > > > } >> > > > >> > > > diff --git a/clang/lib/AST/ASTImporter.cpp >> > > > b/clang/lib/AST/ASTImporter.cpp >> > > > index c368a61577cba..bd78ece6efa98 100644 >> > > > --- a/clang/lib/AST/ASTImporter.cpp >> > > > +++ b/clang/lib/AST/ASTImporter.cpp >> > > > @@ -3592,7 +3592,7 @@ ExpectedDecl >> > > > ASTNodeImporter::VisitFunctionDecl(FunctionDecl *D) { >> > > > >> > > > // Import the function parameters. >> > > > SmallVector<ParmVarDecl *, 8> Parameters; >> > > > - for (auto P : D->parameters()) { >> > > > + for (auto *P : D->parameters()) { >> > > > if (Expected<ParmVarDecl *> ToPOrErr = import(P)) >> > > > Parameters.push_back(*ToPOrErr); >> > > > else >> > > > >> > > > diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp >> > > > index 7dc0fec46d421..957610ef36b74 100644 >> > > > --- a/clang/lib/AST/Decl.cpp >> > > > +++ b/clang/lib/AST/Decl.cpp >> > > > @@ -1527,7 +1527,7 @@ LinkageInfo LinkageComputer::getLVForDecl(const >> > > > NamedDecl *D, >> > > > // that all other computed linkages match, check that the one we >> > > > just >> > > > // computed also does. >> > > > NamedDecl *Old = nullptr; >> > > > - for (auto I : D->redecls()) { >> > > > + for (auto *I : D->redecls()) { >> > > >> > > Similar here for the redeclarations of a `const NamedDecl *`. >> > > >> > > > auto *T = cast<NamedDecl>(I); >> > > > if (T == D) >> > > > continue; >> > > > @@ -1825,7 +1825,7 @@ bool NamedDecl::declarationReplaces(NamedDecl >> > > > *OldD, bool IsKnownNewer) const { >> > > > // Check whether this is actually newer than OldD. We want to >> > > > keep the >> > > > // newer declaration. This loop will usually only iterate once, >> > > > because >> > > > // OldD is usually the previous declaration. >> > > > - for (auto D : redecls()) { >> > > > + for (auto *D : redecls()) { >> > > > if (D == OldD) >> > > > break; >> > > > >> > > > @@ -2273,7 +2273,7 @@ VarDecl *VarDecl::getActingDefinition() { >> > > > >> > > > VarDecl *VarDecl::getDefinition(ASTContext &C) { >> > > > VarDecl *First = getFirstDecl(); >> > > > - for (auto I : First->redecls()) { >> > > > + for (auto *I : First->redecls()) { >> > > > if (I->isThisDeclarationADefinition(C) == Definition) >> > > > return I; >> > > > } >> > > > @@ -2284,7 +2284,7 @@ VarDecl::DefinitionKind >> > > > VarDecl::hasDefinition(ASTContext &C) const { >> > > > DefinitionKind Kind = DeclarationOnly; >> > > > >> > > > const VarDecl *First = getFirstDecl(); >> > > > - for (auto I : First->redecls()) { >> > > > + for (auto *I : First->redecls()) { >> > > > Kind = std::max(Kind, I->isThisDeclarationADefinition(C)); >> > > > if (Kind == Definition) >> > > > break; >> > > > @@ -2294,7 +2294,7 @@ VarDecl::DefinitionKind >> > > > VarDecl::hasDefinition(ASTContext &C) const { >> > > > } >> > > > >> > > > const Expr *VarDecl::getAnyInitializer(const VarDecl *&D) const { >> > > > - for (auto I : redecls()) { >> > > > + for (auto *I : redecls()) { >> > > > if (auto Expr = I->getInit()) { >> > > > D = I; >> > > > return Expr; >> > > > @@ -2330,7 +2330,7 @@ Stmt **VarDecl::getInitAddress() { >> > > > >> > > > VarDecl *VarDecl::getInitializingDeclaration() { >> > > > VarDecl *Def = nullptr; >> > > > - for (auto I : redecls()) { >> > > > + for (auto *I : redecls()) { >> > > > if (I->hasInit()) >> > > > return I; >> > > > >> > > > @@ -3015,7 +3015,7 @@ FunctionDecl::getDefaultedFunctionInfo() const { >> > > > } >> > > > >> > > > bool FunctionDecl::hasBody(const FunctionDecl *&Definition) const { >> > > > - for (auto I : redecls()) { >> > > > + for (auto *I : redecls()) { >> > > > if (I->doesThisDeclarationHaveABody()) { >> > > > Definition = I; >> > > > return true; >> > > > @@ -3686,7 +3686,7 @@ bool >> > > > FunctionDecl::isInlineDefinitionExternallyVisible() const { >> > > > >> > > > // If any declaration is 'inline' but not 'extern', then this >> > > > definition >> > > > // is externally visible. >> > > > - for (auto Redecl : redecls()) { >> > > > + for (auto *Redecl : redecls()) { >> > > > if (Redecl->isInlineSpecified() && >> > > > Redecl->getStorageClass() != SC_Extern) >> > > > return true; >> > > > @@ -3703,7 +3703,7 @@ bool >> > > > FunctionDecl::isInlineDefinitionExternallyVisible() const { >> > > > // [...] If all of the file scope declarations for a function in a >> > > > // translation unit include the inline function specifier without >> > > > extern, >> > > > // then the definition in that translation unit is an inline >> > > > definition. >> > > > - for (auto Redecl : redecls()) { >> > > > + for (auto *Redecl : redecls()) { >> > > > if (RedeclForcesDefC99(Redecl)) >> > > > return true; >> > > > } >> > > > @@ -4408,7 +4408,7 @@ void TagDecl::startDefinition() { >> > > > if (auto *D = dyn_cast<CXXRecordDecl>(this)) { >> > > > struct CXXRecordDecl::DefinitionData *Data = >> > > > new (getASTContext()) struct CXXRecordDecl::DefinitionData(D); >> > > > - for (auto I : redecls()) >> > > > + for (auto *I : redecls()) >> > > > cast<CXXRecordDecl>(I)->DefinitionData = Data; >> > > > } >> > > > } >> > > > @@ -4441,7 +4441,7 @@ TagDecl *TagDecl::getDefinition() const { >> > > > if (const auto *CXXRD = dyn_cast<CXXRecordDecl>(this)) >> > > > return CXXRD->getDefinition(); >> > > > >> > > > - for (auto R : redecls()) >> > > > + for (auto *R : redecls()) >> > > > if (R->isCompleteDefinition()) >> > > > return R; >> > > > >> > > > >> > > > diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp >> > > > index 15c545b59c819..5475d0c841f64 100644 >> > > > --- a/clang/lib/AST/DeclObjC.cpp >> > > > +++ b/clang/lib/AST/DeclObjC.cpp >> > > > @@ -864,7 +864,7 @@ bool >> > > > ObjCMethodDecl::isDesignatedInitializerForTheInterface( >> > > > } >> > > > >> > > > bool ObjCMethodDecl::hasParamDestroyedInCallee() const { >> > > > - for (auto param : parameters()) { >> > > > + for (auto *param : parameters()) { >> > > > if (param->isDestroyedInCallee()) >> > > > return true; >> > > > } >> > > > @@ -1496,7 +1496,7 @@ ObjCTypeParamList *ObjCTypeParamList::create( >> > > > void ObjCTypeParamList::gatherDefaultTypeArgs( >> > > > SmallVectorImpl<QualType> &typeArgs) const { >> > > > typeArgs.reserve(size()); >> > > > - for (auto typeParam : *this) >> > > > + for (auto *typeParam : *this) >> > > > typeArgs.push_back(typeParam->getUnderlyingType()); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/AST/ODRHash.cpp b/clang/lib/AST/ODRHash.cpp >> > > > index 04cbb09356d7b..51f806429f67a 100644 >> > > > --- a/clang/lib/AST/ODRHash.cpp >> > > > +++ b/clang/lib/AST/ODRHash.cpp >> > > > @@ -564,7 +564,7 @@ void ODRHash::AddFunctionDecl(const FunctionDecl >> > > > *Function, >> > > > AddQualType(Function->getReturnType()); >> > > > >> > > > ID.AddInteger(Function->param_size()); >> > > > - for (auto Param : Function->parameters()) >> > > > + for (auto *Param : Function->parameters()) >> > > > AddSubDecl(Param); >> > > > >> > > > if (SkipBody) { >> > > > @@ -934,7 +934,7 @@ class ODRTypeVisitor : public >> > > > TypeVisitor<ODRTypeVisitor> { >> > > > >> > > > auto Protocols = T->getProtocols(); >> > > > ID.AddInteger(Protocols.size()); >> > > > - for (auto Protocol : Protocols) { >> > > > + for (auto *Protocol : Protocols) { >> > > > AddDecl(Protocol); >> > > > } >> > > > >> > > > @@ -952,7 +952,7 @@ class ODRTypeVisitor : public >> > > > TypeVisitor<ODRTypeVisitor> { >> > > > AddDecl(T->getDecl()); >> > > > auto Protocols = T->getProtocols(); >> > > > ID.AddInteger(Protocols.size()); >> > > > - for (auto Protocol : Protocols) { >> > > > + for (auto *Protocol : Protocols) { >> > > > AddDecl(Protocol); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/AST/OpenMPClause.cpp >> > > > b/clang/lib/AST/OpenMPClause.cpp >> > > > index 214ae5bd6be48..adfc1d542bb34 100644 >> > > > --- a/clang/lib/AST/OpenMPClause.cpp >> > > > +++ b/clang/lib/AST/OpenMPClause.cpp >> > > > @@ -1702,7 +1702,7 @@ void >> > > > OMPClausePrinter::VisitOMPSimdlenClause(OMPSimdlenClause *Node) { >> > > > void OMPClausePrinter::VisitOMPSizesClause(OMPSizesClause *Node) { >> > > > OS << "sizes("; >> > > > bool First = true; >> > > > - for (auto Size : Node->getSizesRefs()) { >> > > > + for (auto *Size : Node->getSizesRefs()) { >> > > > if (!First) >> > > > OS << ", "; >> > > > Size->printPretty(OS, nullptr, Policy, 0); >> > > > >> > > > diff --git a/clang/lib/AST/StmtProfile.cpp >> > > > b/clang/lib/AST/StmtProfile.cpp >> > > > index 92a8b18cf68a3..6af2beefc7926 100644 >> > > > --- a/clang/lib/AST/StmtProfile.cpp >> > > > +++ b/clang/lib/AST/StmtProfile.cpp >> > > > @@ -472,7 +472,7 @@ void >> > > > OMPClauseProfiler::VisitOMPSimdlenClause(const OMPSimdlenClause *C) { >> > > > } >> > > > >> > > > void OMPClauseProfiler::VisitOMPSizesClause(const OMPSizesClause *C) { >> > > > - for (auto E : C->getSizesRefs()) >> > > > + for (auto *E : C->getSizesRefs()) >> > > > if (E) >> > > > Profiler->VisitExpr(E); >> > > > } >> > > > >> > > > diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp >> > > > index 136af191f3c04..ec6003fe6559d 100644 >> > > > --- a/clang/lib/AST/Type.cpp >> > > > +++ b/clang/lib/AST/Type.cpp >> > > > @@ -3539,7 +3539,7 @@ TagType::TagType(TypeClass TC, const TagDecl *D, >> > > > QualType can) >> > > > decl(const_cast<TagDecl *>(D)) {} >> > > > >> > > > static TagDecl *getInterestingTagDecl(TagDecl *decl) { >> > > > - for (auto I : decl->redecls()) { >> > > > + for (auto *I : decl->redecls()) { >> > > > if (I->isCompleteDefinition() || I->isBeingDefined()) >> > > > return I; >> > > > } >> > > > @@ -3780,7 +3780,7 @@ void >> > > > ObjCObjectTypeImpl::Profile(llvm::FoldingSetNodeID &ID, >> > > > for (auto typeArg : typeArgs) >> > > > ID.AddPointer(typeArg.getAsOpaquePtr()); >> > > > ID.AddInteger(protocols.size()); >> > > > - for (auto proto : protocols) >> > > > + for (auto *proto : protocols) >> > > > ID.AddPointer(proto); >> > > > ID.AddBoolean(isKindOf); >> > > > } >> > > > @@ -3798,7 +3798,7 @@ void >> > > > ObjCTypeParamType::Profile(llvm::FoldingSetNodeID &ID, >> > > > ID.AddPointer(OTPDecl); >> > > > ID.AddPointer(CanonicalType.getAsOpaquePtr()); >> > > > ID.AddInteger(protocols.size()); >> > > > - for (auto proto : protocols) >> > > > + for (auto *proto : protocols) >> > > > ID.AddPointer(proto); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp >> > > > index 5aaf2fb74318b..f042468ebba72 100644 >> > > > --- a/clang/lib/Analysis/CFG.cpp >> > > > +++ b/clang/lib/Analysis/CFG.cpp >> > > > @@ -2994,7 +2994,7 @@ CFGBlock *CFGBuilder::VisitDeclSubExpr(DeclStmt >> > > > *DS) { >> > > > // If we bind to a tuple-like type, we iterate over the >> > > > HoldingVars, and >> > > > // create a DeclStmt for each of them. >> > > > if (const auto *DD = dyn_cast<DecompositionDecl>(VD)) { >> > > > - for (auto BD : llvm::reverse(DD->bindings())) { >> > > > + for (auto *BD : llvm::reverse(DD->bindings())) { >> > > > if (auto *VD = BD->getHoldingVar()) { >> > > > DeclGroupRef DG(VD); >> > > > DeclStmt *DSNew = >> > > > >> > > > diff --git a/clang/lib/Analysis/ThreadSafetyCommon.cpp >> > > > b/clang/lib/Analysis/ThreadSafetyCommon.cpp >> > > > index 66413f84907a3..06b61b4de92f8 100644 >> > > > --- a/clang/lib/Analysis/ThreadSafetyCommon.cpp >> > > > +++ b/clang/lib/Analysis/ThreadSafetyCommon.cpp >> > > > @@ -637,7 +637,7 @@ SExprBuilder::translateAbstractConditionalOperator( >> > > > til::SExpr * >> > > > SExprBuilder::translateDeclStmt(const DeclStmt *S, CallingContext >> > > > *Ctx) { >> > > > DeclGroupRef DGrp = S->getDeclGroup(); >> > > > - for (auto I : DGrp) { >> > > > + for (auto *I : DGrp) { >> > > > if (auto *VD = dyn_cast_or_null<VarDecl>(I)) { >> > > > Expr *E = VD->getInit(); >> > > > til::SExpr* SE = translate(E, Ctx); >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGBlocks.cpp >> > > > b/clang/lib/CodeGen/CGBlocks.cpp >> > > > index ff6ca0914e0d1..4061fa805d800 100644 >> > > > --- a/clang/lib/CodeGen/CGBlocks.cpp >> > > > +++ b/clang/lib/CodeGen/CGBlocks.cpp >> > > > @@ -521,7 +521,7 @@ static void initializeForBlockHeader(CodeGenModule >> > > > &CGM, CGBlockInfo &info, >> > > > unsigned BlockAlign = GenPtrAlign.getQuantity(); >> > > > if (auto *Helper = >> > > > CGM.getTargetCodeGenInfo().getTargetOpenCLBlockHelper()) { >> > > > - for (auto I : Helper->getCustomFieldTypes()) /* custom fields >> > > > */ { >> > > > + for (auto *I : Helper->getCustomFieldTypes()) /* custom fields >> > > > */ { >> > > > // TargetOpenCLBlockHelp needs to make sure the struct is >> > > > packed. >> > > > // If necessary, add padding fields to the custom fields. >> > > > unsigned Align = CGM.getDataLayout().getABITypeAlignment(I); >> > > > @@ -1356,7 +1356,7 @@ static llvm::Constant >> > > > *buildGlobalBlock(CodeGenModule &CGM, >> > > > fields.add(buildBlockDescriptor(CGM, blockInfo)); >> > > > } else if (auto *Helper = >> > > > >> > > > CGM.getTargetCodeGenInfo().getTargetOpenCLBlockHelper()) { >> > > > - for (auto I : Helper->getCustomFieldValues(CGM, blockInfo)) { >> > > > + for (auto *I : Helper->getCustomFieldValues(CGM, blockInfo)) { >> > > > fields.add(I); >> > > > } >> > > > } >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGCall.cpp >> > > > b/clang/lib/CodeGen/CGCall.cpp >> > > > index 90b1270dc8abc..ff39289d68b30 100644 >> > > > --- a/clang/lib/CodeGen/CGCall.cpp >> > > > +++ b/clang/lib/CodeGen/CGCall.cpp >> > > > @@ -1723,7 +1723,7 @@ CodeGenTypes::GetFunctionType(const >> > > > CGFunctionInfo &FI) { >> > > > >> > > > case ABIArgInfo::CoerceAndExpand: { >> > > > auto ArgTypesIter = ArgTypes.begin() + FirstIRArg; >> > > > - for (auto EltTy : ArgInfo.getCoerceAndExpandTypeSequence()) { >> > > > + for (auto *EltTy : ArgInfo.getCoerceAndExpandTypeSequence()) { >> > > > *ArgTypesIter++ = EltTy; >> > > > } >> > > > assert(ArgTypesIter == ArgTypes.begin() + FirstIRArg + >> > > > NumIRArgs); >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGClass.cpp >> > > > b/clang/lib/CodeGen/CGClass.cpp >> > > > index 4a952b9abd555..bf20c206e1e1f 100644 >> > > > --- a/clang/lib/CodeGen/CGClass.cpp >> > > > +++ b/clang/lib/CodeGen/CGClass.cpp >> > > > @@ -2995,7 +2995,7 @@ void >> > > > CodeGenFunction::EmitLambdaBlockInvokeBody() { >> > > > CallArgs.add(RValue::get(ThisPtr.getPointer()), ThisType); >> > > > >> > > > // Add the rest of the parameters. >> > > > - for (auto param : BD->parameters()) >> > > > + for (auto *param : BD->parameters()) >> > > > EmitDelegateCallArg(CallArgs, param, param->getBeginLoc()); >> > > > >> > > > assert(!Lambda->isGenericLambda() && >> > > > @@ -3015,7 +3015,7 @@ void >> > > > CodeGenFunction::EmitLambdaDelegatingInvokeBody(const CXXMethodDecl >> > > > *MD) { >> > > > CallArgs.add(RValue::get(ThisPtr.getPointer()), ThisType); >> > > > >> > > > // Add the rest of the parameters. >> > > > - for (auto Param : MD->parameters()) >> > > > + for (auto *Param : MD->parameters()) >> > > > EmitDelegateCallArg(CallArgs, Param, Param->getBeginLoc()); >> > > > >> > > > const CXXMethodDecl *CallOp = Lambda->getLambdaCallOperator(); >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp >> > > > b/clang/lib/CodeGen/CGDebugInfo.cpp >> > > > index 4b7e290f6480c..49dcf7781d03a 100644 >> > > > --- a/clang/lib/CodeGen/CGDebugInfo.cpp >> > > > +++ b/clang/lib/CodeGen/CGDebugInfo.cpp >> > > > @@ -3894,7 +3894,7 @@ llvm::DISubprogram >> > > > *CGDebugInfo::getFunctionDeclaration(const Decl *D) { >> > > > return SP; >> > > > } >> > > > >> > > > - for (auto NextFD : FD->redecls()) { >> > > > + for (auto *NextFD : FD->redecls()) { >> > > > auto MI = SPCache.find(NextFD->getCanonicalDecl()); >> > > > if (MI != SPCache.end()) { >> > > > auto *SP = dyn_cast_or_null<llvm::DISubprogram>(MI->second); >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp >> > > > b/clang/lib/CodeGen/CGDeclCXX.cpp >> > > > index 2075857848656..df17e0b52815c 100644 >> > > > --- a/clang/lib/CodeGen/CGDeclCXX.cpp >> > > > +++ b/clang/lib/CodeGen/CGDeclCXX.cpp >> > > > @@ -707,7 +707,7 @@ void CodeGenModule::EmitCXXModuleInitFunc(Module >> > > > *Primary) { >> > > > } >> > > > >> > > > // Now append the ones without specified priority. >> > > > - for (auto F : CXXGlobalInits) >> > > > + for (auto *F : CXXGlobalInits) >> > > > ModuleInits.push_back(F); >> > > > CXXGlobalInits.clear(); >> > > > >> > > > @@ -844,7 +844,7 @@ CodeGenModule::EmitCXXGlobalInitFunc() { >> > > > >> > > > // Prepend the module inits to the highest priority set. >> > > > if (!ModuleInits.empty()) { >> > > > - for (auto F : ModuleInits) >> > > > + for (auto *F : ModuleInits) >> > > > LocalCXXGlobalInits.push_back(F); >> > > > ModuleInits.clear(); >> > > > } >> > > > @@ -862,7 +862,7 @@ CodeGenModule::EmitCXXGlobalInitFunc() { >> > > > CXXGlobalInits.empty()) >> > > > return; >> > > > >> > > > - for (auto F : CXXGlobalInits) >> > > > + for (auto *F : CXXGlobalInits) >> > > > ModuleInits.push_back(F); >> > > > CXXGlobalInits.clear(); >> > > > >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGExpr.cpp >> > > > b/clang/lib/CodeGen/CGExpr.cpp >> > > > index 324eb56167b56..6878255c48acb 100644 >> > > > --- a/clang/lib/CodeGen/CGExpr.cpp >> > > > +++ b/clang/lib/CodeGen/CGExpr.cpp >> > > > @@ -3760,7 +3760,7 @@ static Address >> > > > emitArraySubscriptGEP(CodeGenFunction &CGF, Address addr, >> > > > const llvm::Twine &name = >> > > > "arrayidx") { >> > > > // All the indices except that last must be zero. >> > > > #ifndef NDEBUG >> > > > - for (auto idx : indices.drop_back()) >> > > > + for (auto *idx : indices.drop_back()) >> > > > assert(isa<llvm::ConstantInt>(idx) && >> > > > cast<llvm::ConstantInt>(idx)->isZero()); >> > > > #endif >> > > > @@ -4297,7 +4297,7 @@ unsigned >> > > > CodeGenFunction::getDebugInfoFIndex(const RecordDecl *Rec, >> > > > unsigned FieldIndex) { >> > > > unsigned I = 0, Skipped = 0; >> > > > >> > > > - for (auto F : Rec->getDefinition()->fields()) { >> > > > + for (auto *F : Rec->getDefinition()->fields()) { >> > > > if (I == FieldIndex) >> > > > break; >> > > > if (F->isUnnamedBitfield()) >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGObjCGNU.cpp >> > > > b/clang/lib/CodeGen/CGObjCGNU.cpp >> > > > index 7bbe9af7ed593..c734a539cbfbf 100644 >> > > > --- a/clang/lib/CodeGen/CGObjCGNU.cpp >> > > > +++ b/clang/lib/CodeGen/CGObjCGNU.cpp >> > > > @@ -3316,7 +3316,7 @@ llvm::Constant >> > > > *CGObjCGNU::MakeBitField(ArrayRef<bool> bits) { >> > > > auto fields = builder.beginStruct(); >> > > > fields.addInt(Int32Ty, values.size()); >> > > > auto array = fields.beginArray(); >> > > > - for (auto v : values) array.add(v); >> > > > + for (auto *v : values) array.add(v); >> > > > array.finishAndAddTo(fields); >> > > > >> > > > llvm::Constant *GS = >> > > > >> > > > diff --git a/clang/lib/CodeGen/CGObjCMac.cpp >> > > > b/clang/lib/CodeGen/CGObjCMac.cpp >> > > > index 2d704cec05761..7a972152e1144 100644 >> > > > --- a/clang/lib/CodeGen/CGObjCMac.cpp >> > > > +++ b/clang/lib/CodeGen/CGObjCMac.cpp >> > > > @@ -1171,7 +1171,7 @@ class ProtocolMethodLists { >> > > > static ProtocolMethodLists get(const ObjCProtocolDecl *PD) { >> > > > ProtocolMethodLists result; >> > > > >> > > > - for (auto MD : PD->methods()) { >> > > > + for (auto *MD : PD->methods()) { >> > > > size_t index = (2 * size_t(MD->isOptional())) >> > > > + (size_t(MD->isClassMethod())); >> > > > result.Methods[index].push_back(MD); >> > > > @@ -3454,7 +3454,7 @@ static bool hasWeakMember(QualType type) { >> > > > } >> > > > >> > > > if (auto recType = type->getAs<RecordType>()) { >> > > > - for (auto field : recType->getDecl()->fields()) { >> > > > + for (auto *field : recType->getDecl()->fields()) { >> > > > if (hasWeakMember(field->getType())) >> > > > return true; >> > > > } >> > > > >> > > > diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp >> > > > b/clang/lib/CodeGen/CodeGenFunction.cpp >> > > > index 81c687e4530f4..caf14868078ec 100644 >> > > > --- a/clang/lib/CodeGen/CodeGenFunction.cpp >> > > > +++ b/clang/lib/CodeGen/CodeGenFunction.cpp >> > > > @@ -725,7 +725,7 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, >> > > > QualType RetTy, >> > > > const bool SanitizeBounds = >> > > > SanOpts.hasOneOf(SanitizerKind::Bounds); >> > > > bool NoSanitizeCoverage = false; >> > > > >> > > > - for (auto Attr : D->specific_attrs<NoSanitizeAttr>()) { >> > > > + for (auto *Attr : D->specific_attrs<NoSanitizeAttr>()) { >> > > > // Apply the no_sanitize* attributes to SanOpts. >> > > > SanitizerMask mask = Attr->getMask(); >> > > > SanOpts.Mask &= ~mask; >> > > > >> > > > diff --git a/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp >> > > > b/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp >> > > > index f6eaa35b48738..677b66d3e1dcb 100644 >> > > > --- a/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp >> > > > +++ b/clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp >> > > > @@ -107,7 +107,7 @@ class PCHContainerGenerator : public ASTConsumer { >> > > > return true; >> > > > >> > > > SmallVector<QualType, 16> ArgTypes; >> > > > - for (auto i : D->parameters()) >> > > > + for (auto *i : D->parameters()) >> > > > ArgTypes.push_back(i->getType()); >> > > > QualType RetTy = D->getReturnType(); >> > > > QualType FnTy = Ctx.getFunctionType(RetTy, ArgTypes, >> > > > @@ -126,7 +126,7 @@ class PCHContainerGenerator : public ASTConsumer { >> > > > ArgTypes.push_back(D->getSelfType(Ctx, D->getClassInterface(), >> > > > selfIsPseudoStrong, >> > > > selfIsConsumed)); >> > > > ArgTypes.push_back(Ctx.getObjCSelType()); >> > > > - for (auto i : D->parameters()) >> > > > + for (auto *i : D->parameters()) >> > > > ArgTypes.push_back(i->getType()); >> > > > QualType RetTy = D->getReturnType(); >> > > > QualType FnTy = Ctx.getFunctionType(RetTy, ArgTypes, >> > > > >> > > > diff --git a/clang/lib/CodeGen/SwiftCallingConv.cpp >> > > > b/clang/lib/CodeGen/SwiftCallingConv.cpp >> > > > index e42859af05a2b..a7d7c9357272d 100644 >> > > > --- a/clang/lib/CodeGen/SwiftCallingConv.cpp >> > > > +++ b/clang/lib/CodeGen/SwiftCallingConv.cpp >> > > > @@ -124,7 +124,7 @@ void SwiftAggLowering::addTypedData(const >> > > > RecordDecl *record, CharUnits begin, >> > > > const ASTRecordLayout &layout) { >> > > > // Unions are a special case. >> > > > if (record->isUnion()) { >> > > > - for (auto field : record->fields()) { >> > > > + for (auto *field : record->fields()) { >> > > > if (field->isBitField()) { >> > > > addBitFieldData(field, begin, 0); >> > > > } else { >> > > > @@ -161,7 +161,7 @@ void SwiftAggLowering::addTypedData(const >> > > > RecordDecl *record, CharUnits begin, >> > > > } >> > > > >> > > > // Add fields. >> > > > - for (auto field : record->fields()) { >> > > > + for (auto *field : record->fields()) { >> > > > auto fieldOffsetInBits = >> > > > layout.getFieldOffset(field->getFieldIndex()); >> > > > if (field->isBitField()) { >> > > > addBitFieldData(field, begin, fieldOffsetInBits); >> > > > >> > > > diff --git a/clang/lib/Driver/Compilation.cpp >> > > > b/clang/lib/Driver/Compilation.cpp >> > > > index ecf3da284b2a7..90d2e0659a39a 100644 >> > > > --- a/clang/lib/Driver/Compilation.cpp >> > > > +++ b/clang/lib/Driver/Compilation.cpp >> > > > @@ -102,7 +102,7 @@ Compilation::getArgsForToolChain(const ToolChain >> > > > *TC, StringRef BoundArch, >> > > > } >> > > > >> > > > // Add allocated arguments to the final DAL. >> > > > - for (auto ArgPtr : AllocatedArgs) >> > > > + for (auto *ArgPtr : AllocatedArgs) >> > > > Entry->AddSynthesizedArg(ArgPtr); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp >> > > > index ba359a1d31a53..0a61b5e2d62d4 100644 >> > > > --- a/clang/lib/Driver/Driver.cpp >> > > > +++ b/clang/lib/Driver/Driver.cpp >> > > > @@ -3715,7 +3715,7 @@ class OffloadingActionBuilder final { >> > > > /*BoundArch=*/nullptr); >> > > > // Propagate active offloading kinds for each input to the link >> > > > action. >> > > > // Each input may have >> > > > diff erent active offloading kind. >> > > > - for (auto A : HostAction->inputs()) { >> > > > + for (auto *A : HostAction->inputs()) { >> > > > auto ArgLoc = HostActionToInputArgMap.find(A); >> > > > if (ArgLoc == HostActionToInputArgMap.end()) >> > > > continue; >> > > > >> > > > diff --git a/clang/lib/Driver/ToolChains/Clang.cpp >> > > > b/clang/lib/Driver/ToolChains/Clang.cpp >> > > > index 2dd9ac01b3ef9..99a8642cfd85b 100644 >> > > > --- a/clang/lib/Driver/ToolChains/Clang.cpp >> > > > +++ b/clang/lib/Driver/ToolChains/Clang.cpp >> > > > @@ -4974,13 +4974,13 @@ void Clang::ConstructJob(Compilation &C, const >> > > > JobAction &JA, >> > > > // Since we can't access frontend flags through hasArg, let's >> > > > manually iterate >> > > > // through them. >> > > > bool FoundAnalyzerConfig = false; >> > > > - for (auto Arg : Args.filtered(options::OPT_Xclang)) >> > > > + for (auto *Arg : Args.filtered(options::OPT_Xclang)) >> > > > if (StringRef(Arg->getValue()) == "-analyzer-config") { >> > > > FoundAnalyzerConfig = true; >> > > > break; >> > > > } >> > > > if (!FoundAnalyzerConfig) >> > > > - for (auto Arg : Args.filtered(options::OPT_Xanalyzer)) >> > > > + for (auto *Arg : Args.filtered(options::OPT_Xanalyzer)) >> > > > if (StringRef(Arg->getValue()) == "-analyzer-config") { >> > > > FoundAnalyzerConfig = true; >> > > > break; >> > > > @@ -6924,7 +6924,7 @@ void Clang::ConstructJob(Compilation &C, const >> > > > JobAction &JA, >> > > > // do not pass it to other cc1 commands when save-temps is enabled >> > > > if (C.getDriver().isSaveTempsEnabled() && >> > > > !isa<PreprocessJobAction>(JA)) { >> > > > - for (auto Arg : Args.filtered(options::OPT_Xclang)) { >> > > > + for (auto *Arg : Args.filtered(options::OPT_Xclang)) { >> > > > Arg->claim(); >> > > > if (StringRef(Arg->getValue()) != "-finclude-default-header") >> > > > CmdArgs.push_back(Arg->getValue()); >> > > > >> > > > diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp >> > > > b/clang/lib/Driver/ToolChains/CommonArgs.cpp >> > > > index 3b084dfdbfa2c..4760a6f528627 100644 >> > > > --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp >> > > > +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp >> > > > @@ -2161,7 +2161,7 @@ void tools::addHIPRuntimeLibArgs(const ToolChain >> > > > &TC, >> > > > TC.AddHIPRuntimeLibArgs(Args, CmdArgs); >> > > > } else { >> > > > // Claim "no HIP libraries" arguments if any >> > > > - for (auto Arg : Args.filtered(options::OPT_no_hip_rt)) { >> > > > + for (auto *Arg : Args.filtered(options::OPT_no_hip_rt)) { >> > > > Arg->claim(); >> > > > } >> > > > } >> > > > >> > > > diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp >> > > > b/clang/lib/Driver/ToolChains/Gnu.cpp >> > > > index 9730109dd993f..047ec67f95e12 100644 >> > > > --- a/clang/lib/Driver/ToolChains/Gnu.cpp >> > > > +++ b/clang/lib/Driver/ToolChains/Gnu.cpp >> > > > @@ -1369,7 +1369,7 @@ static bool findMipsMtiMultilibs(const >> > > > Multilib::flags_list &Flags, >> > > > {"/../../../../mips-mti-linux-gnu/lib" + >> > > > M.gccSuffix()}); >> > > > }); >> > > > } >> > > > - for (auto Candidate : {&MtiMipsMultilibsV1, &MtiMipsMultilibsV2}) { >> > > > + for (auto *Candidate : {&MtiMipsMultilibsV1, &MtiMipsMultilibsV2}) { >> > > > if (Candidate->select(Flags, Result.SelectedMultilib)) { >> > > > Result.Multilibs = *Candidate; >> > > > return true; >> > > > @@ -1462,7 +1462,7 @@ static bool findMipsImgMultilibs(const >> > > > Multilib::flags_list &Flags, >> > > > {"/../../../../mips-img-linux-gnu/lib" + >> > > > M.gccSuffix()}); >> > > > }); >> > > > } >> > > > - for (auto Candidate : {&ImgMultilibsV1, &ImgMultilibsV2}) { >> > > > + for (auto *Candidate : {&ImgMultilibsV1, &ImgMultilibsV2}) { >> > > > if (Candidate->select(Flags, Result.SelectedMultilib)) { >> > > > Result.Multilibs = *Candidate; >> > > > return true; >> > > > >> > > > diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp >> > > > b/clang/lib/Driver/ToolChains/HIPAMD.cpp >> > > > index 35728ffb0b55a..7791074d7c92a 100644 >> > > > --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp >> > > > +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp >> > > > @@ -202,7 +202,7 @@ HIPAMDToolChain::HIPAMDToolChain(const Driver &D, >> > > > const llvm::Triple &Triple, >> > > > if (!Args.hasFlag(options::OPT_fgpu_sanitize, >> > > > options::OPT_fno_gpu_sanitize, >> > > > true)) >> > > > return; >> > > > - for (auto A : Args.filtered(options::OPT_fsanitize_EQ)) { >> > > > + for (auto *A : Args.filtered(options::OPT_fsanitize_EQ)) { >> > > > SanitizerMask K = parseSanitizerValue(A->getValue(), >> > > > /*AllowGroups=*/false); >> > > > if (K != SanitizerKind::Address) >> > > > >> > > > D.getDiags().Report(clang::diag::warn_drv_unsupported_option_for_target) >> > > > >> > > > diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp >> > > > index 1108a02407e4f..8197fccd2f3e3 100644 >> > > > --- a/clang/lib/Format/Format.cpp >> > > > +++ b/clang/lib/Format/Format.cpp >> > > > @@ -2539,7 +2539,7 @@ class ObjCHeaderStyleGuesser : public >> > > > TokenAnalyzer { >> > > > "UIView", >> > > > }; >> > > > >> > > > - for (auto Line : AnnotatedLines) { >> > > > + for (auto *Line : AnnotatedLines) { >> > > > if (Line->First && (Line->First->TokenText.startswith("#") || >> > > > Line->First->TokenText == "__pragma" || >> > > > Line->First->TokenText == "_Pragma")) { >> > > > >> > > > diff --git a/clang/lib/Frontend/FrontendActions.cpp >> > > > b/clang/lib/Frontend/FrontendActions.cpp >> > > > index f833541caa25c..cff61d7929a1b 100644 >> > > > --- a/clang/lib/Frontend/FrontendActions.cpp >> > > > +++ b/clang/lib/Frontend/FrontendActions.cpp >> > > > @@ -920,12 +920,12 @@ void DumpModuleInfoAction::ExecuteAction() { >> > > > if (Primary) { >> > > > if (!Primary->submodules().empty()) >> > > > Out << " Sub Modules:\n"; >> > > > - for (auto MI : Primary->submodules()) { >> > > > + for (auto *MI : Primary->submodules()) { >> > > > PrintSubMapEntry(MI->Name, MI->Kind); >> > > > } >> > > > if (!Primary->Imports.empty()) >> > > > Out << " Imports:\n"; >> > > > - for (auto IMP : Primary->Imports) { >> > > > + for (auto *IMP : Primary->Imports) { >> > > > PrintSubMapEntry(IMP->Name, IMP->Kind); >> > > > } >> > > > if (!Primary->Exports.empty()) >> > > > >> > > > diff --git a/clang/lib/Index/USRGeneration.cpp >> > > > b/clang/lib/Index/USRGeneration.cpp >> > > > index a206642e4b587..c1120058235c6 100644 >> > > > --- a/clang/lib/Index/USRGeneration.cpp >> > > > +++ b/clang/lib/Index/USRGeneration.cpp >> > > > @@ -258,7 +258,7 @@ void USRGenerator::VisitFunctionDecl(const >> > > > FunctionDecl *D) { >> > > > } >> > > > >> > > > // Mangle in type information for the arguments. >> > > > - for (auto PD : D->parameters()) { >> > > > + for (auto *PD : D->parameters()) { >> > > > Out << '#'; >> > > > VisitType(PD->getType()); >> > > > } >> > > > >> > > > diff --git a/clang/lib/Sema/IdentifierResolver.cpp >> > > > b/clang/lib/Sema/IdentifierResolver.cpp >> > > > index 9081714c893f5..4ee10f9fddfbe 100644 >> > > > --- a/clang/lib/Sema/IdentifierResolver.cpp >> > > > +++ b/clang/lib/Sema/IdentifierResolver.cpp >> > > > @@ -287,7 +287,7 @@ static DeclMatchKind compareDeclarations(NamedDecl >> > > > *Existing, NamedDecl *New) { >> > > > >> > > > // If the existing declaration is somewhere in the previous >> > > > declaration >> > > > // chain of the new declaration, then prefer the new declaration. >> > > > - for (auto RD : New->redecls()) { >> > > > + for (auto *RD : New->redecls()) { >> > > > if (RD == Existing) >> > > > return DMK_Replace; >> > > > >> > > > >> > > > diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp >> > > > index 1158685681af1..5215b60defe8a 100644 >> > > > --- a/clang/lib/Sema/Sema.cpp >> > > > +++ b/clang/lib/Sema/Sema.cpp >> > > > @@ -1315,7 +1315,7 @@ void Sema::ActOnEndOfTranslationUnit() { >> > > > Consumer.CompleteTentativeDefinition(VD); >> > > > } >> > > > >> > > > - for (auto D : ExternalDeclarations) { >> > > > + for (auto *D : ExternalDeclarations) { >> > > > if (!D || D->isInvalidDecl() || D->getPreviousDecl() || >> > > > !D->isUsed()) >> > > > continue; >> > > > >> > > > @@ -1784,7 +1784,7 @@ void Sema::emitDeferredDiags() { >> > > > return; >> > > > >> > > > DeferredDiagnosticsEmitter DDE(*this); >> > > > - for (auto D : DeclsToCheckForDeferredDiags) >> > > > + for (auto *D : DeclsToCheckForDeferredDiags) >> > > > DDE.checkRecordedDecl(D); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/Sema/SemaCodeComplete.cpp >> > > > b/clang/lib/Sema/SemaCodeComplete.cpp >> > > > index 6d5769a396277..c80605ba7f5a7 100644 >> > > > --- a/clang/lib/Sema/SemaCodeComplete.cpp >> > > > +++ b/clang/lib/Sema/SemaCodeComplete.cpp >> > > > @@ -4201,7 +4201,7 @@ static void MaybeAddOverrideCalls(Sema &S, >> > > > DeclContext *InContext, >> > > > >> > > > // We need to have names for all of the parameters, if we're going >> > > > to >> > > > // generate a forwarding call. >> > > > - for (auto P : Method->parameters()) >> > > > + for (auto *P : Method->parameters()) >> > > > if (!P->getDeclName()) >> > > > return; >> > > > >> > > > @@ -4229,7 +4229,7 @@ static void MaybeAddOverrideCalls(Sema &S, >> > > > DeclContext *InContext, >> > > > >> > > > Results.getAllocator().CopyString(Overridden->getNameAsString())); >> > > > Builder.AddChunk(CodeCompletionString::CK_LeftParen); >> > > > bool FirstParam = true; >> > > > - for (auto P : Method->parameters()) { >> > > > + for (auto *P : Method->parameters()) { >> > > > if (FirstParam) >> > > > FirstParam = false; >> > > > else >> > > > >> > > > diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp >> > > > index 1a29e6bb86f39..3a84761616163 100644 >> > > > --- a/clang/lib/Sema/SemaDecl.cpp >> > > > +++ b/clang/lib/Sema/SemaDecl.cpp >> > > > @@ -8088,7 +8088,7 @@ void Sema::CheckShadow(NamedDecl *D, NamedDecl >> > > > *ShadowedDecl, >> > > > if (shadowedVar->isExternC()) { >> > > > // For shadowing external vars, make sure that we point to the >> > > > global >> > > > // declaration, not a locally scoped extern declaration. >> > > > - for (auto I : shadowedVar->redecls()) >> > > > + for (auto *I : shadowedVar->redecls()) >> > > > if (I->isFileVarDecl()) { >> > > > ShadowedDecl = I; >> > > > break; >> > > > @@ -10463,7 +10463,7 @@ Sema::ActOnFunctionDeclarator(Scope *S, >> > > > Declarator &D, DeclContext *DC, >> > > > } >> > > > >> > > > llvm::SmallPtrSet<const Type *, 16> ValidTypes; >> > > > - for (auto Param : NewFD->parameters()) >> > > > + for (auto *Param : NewFD->parameters()) >> > > > checkIsValidOpenCLKernelParameter(*this, D, Param, ValidTypes); >> > > > >> > > > if (getLangOpts().OpenCLCPlusPlus) { >> > > > @@ -11972,7 +11972,7 @@ namespace { >> > > > // Track and increment the index here. >> > > > isInitList = true; >> > > > InitFieldIndex.push_back(0); >> > > > - for (auto Child : InitList->children()) { >> > > > + for (auto *Child : InitList->children()) { >> > > > CheckExpr(cast<Expr>(Child)); >> > > > ++InitFieldIndex.back(); >> > > > } >> > > > @@ -12453,7 +12453,7 @@ void >> > > > Sema::checkNonTrivialCUnionInInitializer(const Expr *Init, >> > > > InitType.hasNonTrivialToPrimitiveCopyCUnion()) && >> > > > "shouldn't be called if type doesn't have a non-trivial C >> > > > struct"); >> > > > if (auto *ILE = dyn_cast<InitListExpr>(Init)) { >> > > > - for (auto I : ILE->inits()) { >> > > > + for (auto *I : ILE->inits()) { >> > > > if >> > > > (!I->getType().hasNonTrivialToPrimitiveDefaultInitializeCUnion() && >> > > > !I->getType().hasNonTrivialToPrimitiveCopyCUnion()) >> > > > continue; >> > > > @@ -14915,7 +14915,7 @@ Decl *Sema::ActOnStartOfFunctionDef(Scope >> > > > *FnBodyScope, Decl *D, >> > > > } >> > > > >> > > > // Introduce our parameters into the function scope >> > > > - for (auto Param : FD->parameters()) { >> > > > + for (auto *Param : FD->parameters()) { >> > > > Param->setOwningFunction(FD); >> > > > >> > > > // If this has an identifier, add it to the scope stack. >> > > > >> > > > diff --git a/clang/lib/Sema/SemaDeclAttr.cpp >> > > > b/clang/lib/Sema/SemaDeclAttr.cpp >> > > > index 0e9b27fff180a..580ecf8995db1 100644 >> > > > --- a/clang/lib/Sema/SemaDeclAttr.cpp >> > > > +++ b/clang/lib/Sema/SemaDeclAttr.cpp >> > > > @@ -7256,7 +7256,7 @@ static void handleAVRSignalAttr(Sema &S, Decl >> > > > *D, const ParsedAttr &AL) { >> > > > >> > > > static void handleBPFPreserveAIRecord(Sema &S, RecordDecl *RD) { >> > > > // Add preserve_access_index attribute to all fields and inner >> > > > records. >> > > > - for (auto D : RD->decls()) { >> > > > + for (auto *D : RD->decls()) { >> > > > if (D->hasAttr<BPFPreserveAccessIndexAttr>()) >> > > > continue; >> > > > >> > > > >> > > > diff --git a/clang/lib/Sema/SemaDeclCXX.cpp >> > > > b/clang/lib/Sema/SemaDeclCXX.cpp >> > > > index 7c70255fd3e5d..f7e20759e3d6e 100644 >> > > > --- a/clang/lib/Sema/SemaDeclCXX.cpp >> > > > +++ b/clang/lib/Sema/SemaDeclCXX.cpp >> > > > @@ -3777,7 +3777,7 @@ namespace { >> > > > >> > > > void CheckInitListExpr(InitListExpr *ILE) { >> > > > InitFieldIndex.push_back(0); >> > > > - for (auto Child : ILE->children()) { >> > > > + for (auto *Child : ILE->children()) { >> > > > if (InitListExpr *SubList = dyn_cast<InitListExpr>(Child)) { >> > > > CheckInitListExpr(SubList); >> > > > } else { >> > > > @@ -3848,7 +3848,7 @@ namespace { >> > > > Expr *Callee = E->getCallee(); >> > > > if (isa<MemberExpr>(Callee)) { >> > > > HandleValue(Callee, false /*AddressOf*/); >> > > > - for (auto Arg : E->arguments()) >> > > > + for (auto *Arg : E->arguments()) >> > > > Visit(Arg); >> > > > return; >> > > > } >> > > > @@ -3873,7 +3873,7 @@ namespace { >> > > > return Inherited::VisitCXXOperatorCallExpr(E); >> > > > >> > > > Visit(Callee); >> > > > - for (auto Arg : E->arguments()) >> > > > + for (auto *Arg : E->arguments()) >> > > > HandleValue(Arg->IgnoreParenImpCasts(), false /*AddressOf*/); >> > > > } >> > > > >> > > > @@ -15582,7 +15582,7 @@ ExprResult >> > > > Sema::BuildCXXDefaultInitExpr(SourceLocation Loc, FieldDecl *Field) { >> > > > ClassPattern->lookup(Field->getDeclName()); >> > > > >> > > > FieldDecl *Pattern = nullptr; >> > > > - for (auto L : Lookup) { >> > > > + for (auto *L : Lookup) { >> > > > if (isa<FieldDecl>(L)) { >> > > > Pattern = cast<FieldDecl>(L); >> > > > break; >> > > > @@ -15931,7 +15931,7 @@ bool >> > > > Sema::CheckOverloadedOperatorDeclaration(FunctionDecl *FnDecl) { >> > > > diag::err_operator_overload_static) << >> > > > FnDecl->getDeclName(); >> > > > } else { >> > > > bool ClassOrEnumParam = false; >> > > > - for (auto Param : FnDecl->parameters()) { >> > > > + for (auto *Param : FnDecl->parameters()) { >> > > > QualType ParamType = Param->getType().getNonReferenceType(); >> > > > if (ParamType->isDependentType() || ParamType->isRecordType() || >> > > > ParamType->isEnumeralType()) { >> > > > @@ -15954,7 +15954,7 @@ bool >> > > > Sema::CheckOverloadedOperatorDeclaration(FunctionDecl *FnDecl) { >> > > > // operator (CWG2507) allow default arguments. >> > > > if (Op != OO_Call) { >> > > > ParmVarDecl *FirstDefaultedParam = nullptr; >> > > > - for (auto Param : FnDecl->parameters()) { >> > > > + for (auto *Param : FnDecl->parameters()) { >> > > > if (Param->hasDefaultArg()) { >> > > > FirstDefaultedParam = Param; >> > > > break; >> > > > @@ -16260,7 +16260,7 @@ bool >> > > > Sema::CheckLiteralOperatorDeclaration(FunctionDecl *FnDecl) { >> > > > >> > > > // A parameter-declaration-clause containing a default argument is >> > > > not >> > > > // equivalent to any of the permitted forms. >> > > > - for (auto Param : FnDecl->parameters()) { >> > > > + for (auto *Param : FnDecl->parameters()) { >> > > > if (Param->hasDefaultArg()) { >> > > > Diag(Param->getDefaultArgRange().getBegin(), >> > > > diag::err_literal_operator_default_argument) >> > > > @@ -17968,7 +17968,7 @@ bool Sema::DefineUsedVTables() { >> > > > // definition. >> > > > bool IsExplicitInstantiationDeclaration = >> > > > ClassTSK == TSK_ExplicitInstantiationDeclaration; >> > > > - for (auto R : Class->redecls()) { >> > > > + for (auto *R : Class->redecls()) { >> > > > TemplateSpecializationKind TSK >> > > > = cast<CXXRecordDecl>(R)->getTemplateSpecializationKind(); >> > > > if (TSK == TSK_ExplicitInstantiationDeclaration) >> > > > >> > > > diff --git a/clang/lib/Sema/SemaDeclObjC.cpp >> > > > b/clang/lib/Sema/SemaDeclObjC.cpp >> > > > index ed33d9ffe8312..c55cb7842072b 100644 >> > > > --- a/clang/lib/Sema/SemaDeclObjC.cpp >> > > > +++ b/clang/lib/Sema/SemaDeclObjC.cpp >> > > > @@ -782,7 +782,7 @@ ObjCTypeParamList >> > > > *Sema::actOnObjCTypeParamList(Scope *S, >> > > > // scope until later (after the instance variable block), but we >> > > > want the >> > > > // diagnostics to occur right after we parse the type parameter >> > > > list. >> > > > llvm::SmallDenseMap<IdentifierInfo *, ObjCTypeParamDecl *> >> > > > knownParams; >> > > > - for (auto typeParam : typeParams) { >> > > > + for (auto *typeParam : typeParams) { >> > > > auto known = knownParams.find(typeParam->getIdentifier()); >> > > > if (known != knownParams.end()) { >> > > > Diag(typeParam->getLocation(), diag::err_objc_type_param_redecl) >> > > > @@ -803,7 +803,7 @@ ObjCTypeParamList >> > > > *Sema::actOnObjCTypeParamList(Scope *S, >> > > > } >> > > > >> > > > void Sema::popObjCTypeParamList(Scope *S, ObjCTypeParamList >> > > > *typeParamList) { >> > > > - for (auto typeParam : *typeParamList) { >> > > > + for (auto *typeParam : *typeParamList) { >> > > > if (!typeParam->isInvalidDecl()) { >> > > > S->RemoveDecl(typeParam); >> > > > IdResolver.RemoveDecl(typeParam); >> > > > @@ -1029,7 +1029,7 @@ ObjCInterfaceDecl >> > > > *Sema::ActOnStartClassInterface( >> > > > >> > > > // Clone the type parameter list. >> > > > SmallVector<ObjCTypeParamDecl *, 4> clonedTypeParams; >> > > > - for (auto typeParam : *prevTypeParamList) { >> > > > + for (auto *typeParam : *prevTypeParamList) { >> > > > clonedTypeParams.push_back( >> > > > ObjCTypeParamDecl::Create( >> > > > Context, >> > > > @@ -1502,7 +1502,7 @@ void Sema::actOnObjCTypeArgsOrProtocolQualifiers( >> > > > llvm::SmallPtrSet<ObjCProtocolDecl*, 8> knownProtocols; >> > > > Context.CollectInheritedProtocols(baseClass, knownProtocols); >> > > > bool allProtocolsDeclared = true; >> > > > - for (auto proto : protocols) { >> > > > + for (auto *proto : protocols) { >> > > > if (knownProtocols.count(static_cast<ObjCProtocolDecl >> > > > *>(proto)) == 0) { >> > > > allProtocolsDeclared = false; >> > > > break; >> > > > @@ -3855,7 +3855,7 @@ static void DiagnoseVariableSizedIvars(Sema &S, >> > > > ObjCContainerDecl *OCD) { >> > > > >> > > > // Check if variable sized ivar is in interface and visible to >> > > > subclasses. >> > > > if (!isa<ObjCInterfaceDecl>(OCD)) { >> > > > - for (auto ivar : Ivars) { >> > > > + for (auto *ivar : Ivars) { >> > > > if (!ivar->isInvalidDecl() && >> > > > IsVariableSizedType(ivar->getType())) { >> > > > S.Diag(ivar->getLocation(), >> > > > diag::warn_variable_sized_ivar_visibility) >> > > > << ivar->getDeclName() << ivar->getType(); >> > > > @@ -3990,7 +3990,7 @@ Decl *Sema::ActOnAtEnd(Scope *S, SourceRange >> > > > AtEnd, ArrayRef<Decl *> allMethods, >> > > > // they are overridden by an explicit method that is encountered >> > > > // later. >> > > > if (auto *OID = dyn_cast<ObjCImplementationDecl>(CurContext)) { >> > > > - for (auto PropImpl : OID->property_impls()) { >> > > > + for (auto *PropImpl : OID->property_impls()) { >> > > > if (auto *Getter = PropImpl->getGetterMethodDecl()) >> > > > if (Getter->isSynthesizedAccessorStub()) >> > > > OID->addDecl(Getter); >> > > > >> > > > diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp >> > > > index f124ad3bc08d0..43c27c0ddd5e9 100644 >> > > > --- a/clang/lib/Sema/SemaExpr.cpp >> > > > +++ b/clang/lib/Sema/SemaExpr.cpp >> > > > @@ -136,7 +136,7 @@ void Sema::NoteDeletedFunction(FunctionDecl *Decl) >> > > > { >> > > > /// Determine whether a FunctionDecl was ever declared with an >> > > > /// explicit storage class. >> > > > static bool hasAnyExplicitStorageClass(const FunctionDecl *D) { >> > > > - for (auto I : D->redecls()) { >> > > > + for (auto *I : D->redecls()) { >> > > > if (I->getStorageClass() != SC_None) >> > > > return true; >> > > > } >> > > > @@ -16289,7 +16289,7 @@ void Sema::ActOnBlockArguments(SourceLocation >> > > > CaretLoc, Declarator &ParamInfo, >> > > > ProcessDeclAttributes(CurScope, CurBlock->TheDecl, ParamInfo); >> > > > >> > > > // Put the parameter variables in scope. >> > > > - for (auto AI : CurBlock->TheDecl->parameters()) { >> > > > + for (auto *AI : CurBlock->TheDecl->parameters()) { >> > > > AI->setOwningFunction(CurBlock->TheDecl); >> > > > >> > > > // If this has an identifier, add it to the scope stack. >> > > > @@ -17670,7 +17670,7 @@ HandleImmediateInvocations(Sema &SemaRef, >> > > > for (auto CE : Rec.ImmediateInvocationCandidates) >> > > > if (!CE.getInt()) >> > > > EvaluateAndDiagnoseImmediateInvocation(SemaRef, CE); >> > > > - for (auto DR : Rec.ReferenceToConsteval) { >> > > > + for (auto *DR : Rec.ReferenceToConsteval) { >> > > > auto *FD = cast<FunctionDecl>(DR->getDecl()); >> > > > SemaRef.Diag(DR->getBeginLoc(), >> > > > diag::err_invalid_consteval_take_address) >> > > > << FD; >> > > > @@ -18111,7 +18111,7 @@ void >> > > > Sema::MarkFunctionReferenced(SourceLocation Loc, FunctionDecl *Func, >> > > > } >> > > > } else { >> > > > // Walk redefinitions, as some of them may be instantiable. >> > > > - for (auto i : Func->redecls()) { >> > > > + for (auto *i : Func->redecls()) { >> > > > if (!i->isUsed(false) && i->isImplicitlyInstantiable()) >> > > > MarkFunctionReferenced(Loc, i, MightBeOdrUse); >> > > > } >> > > > >> > > > diff --git a/clang/lib/Sema/SemaExprCXX.cpp >> > > > b/clang/lib/Sema/SemaExprCXX.cpp >> > > > index c43c9dc21bd5e..bc950ab7c4a7a 100644 >> > > > --- a/clang/lib/Sema/SemaExprCXX.cpp >> > > > +++ b/clang/lib/Sema/SemaExprCXX.cpp >> > > > @@ -8467,7 +8467,7 @@ class TransformTypos : public >> > > > TreeTransform<TransformTypos> { >> > > > /// >> > > > /// Returns true if there are any untried correction combinations. >> > > > bool CheckAndAdvanceTypoExprCorrectionStreams() { >> > > > - for (auto TE : TypoExprs) { >> > > > + for (auto *TE : TypoExprs) { >> > > > auto &State = SemaRef.getTypoExprState(TE); >> > > > TransformCache.erase(TE); >> > > > if (!State.Consumer->hasMadeAnyCorrectionProgress()) >> > > > @@ -8534,7 +8534,7 @@ class TransformTypos : public >> > > > TreeTransform<TransformTypos> { >> > > > // TypoExprs were created recursively and thus won't be in our >> > > > // Sema's TypoExprs - they were created in our >> > > > `RecursiveTransformLoop`. >> > > > auto &SemaTypoExprs = SemaRef.TypoExprs; >> > > > - for (auto TE : TypoExprs) { >> > > > + for (auto *TE : TypoExprs) { >> > > > TransformCache.erase(TE); >> > > > SemaRef.clearDelayedTypo(TE); >> > > > >> > > > >> > > > diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp >> > > > index b5cf96af07afa..8f21cf5cc7d7a 100644 >> > > > --- a/clang/lib/Sema/SemaInit.cpp >> > > > +++ b/clang/lib/Sema/SemaInit.cpp >> > > > @@ -5977,7 +5977,7 @@ void InitializationSequence::InitializeFrom(Sema >> > > > &S, >> > > > !Context.hasSameUnqualifiedType(SourceType, DestType))) { >> > > > >> > > > llvm::SmallVector<Expr *> InitArgs; >> > > > - for (auto Arg : Args) { >> > > > + for (auto *Arg : Args) { >> > > > if (Arg->getType()->isExtVectorType()) { >> > > > const auto *VTy = Arg->getType()->castAs<ExtVectorType>(); >> > > > unsigned Elm = VTy->getNumElements(); >> > > > >> > > > diff --git a/clang/lib/Sema/SemaLambda.cpp >> > > > b/clang/lib/Sema/SemaLambda.cpp >> > > > index aca0b7a147730..1cf44bd694c54 100644 >> > > > --- a/clang/lib/Sema/SemaLambda.cpp >> > > > +++ b/clang/lib/Sema/SemaLambda.cpp >> > > > @@ -418,7 +418,7 @@ CXXMethodDecl >> > > > *Sema::startLambdaDefinition(CXXRecordDecl *Class, >> > > > CheckParmsForFunctionDef(Params, >> > > > /*CheckParameterNames=*/false); >> > > > >> > > > - for (auto P : Method->parameters()) >> > > > + for (auto *P : Method->parameters()) >> > > > P->setOwningFunction(Method); >> > > > } >> > > > >> > > > >> > > > diff --git a/clang/lib/Sema/SemaLookup.cpp >> > > > b/clang/lib/Sema/SemaLookup.cpp >> > > > index 22d72c3251a0c..70a32bd737160 100644 >> > > > --- a/clang/lib/Sema/SemaLookup.cpp >> > > > +++ b/clang/lib/Sema/SemaLookup.cpp >> > > > @@ -156,7 +156,7 @@ namespace { >> > > > void addUsingDirectives(DeclContext *DC, DeclContext >> > > > *EffectiveDC) { >> > > > SmallVector<DeclContext*, 4> queue; >> > > > while (true) { >> > > > - for (auto UD : DC->using_directives()) { >> > > > + for (auto *UD : DC->using_directives()) { >> > > > DeclContext *NS = UD->getNominatedNamespace(); >> > > > if (SemaRef.isVisible(UD) && visited.insert(NS).second) { >> > > > addUsingDirective(UD, EffectiveDC); >> > > > @@ -2018,7 +2018,7 @@ static NamedDecl *findAcceptableDecl(Sema >> > > > &SemaRef, NamedDecl *D, >> > > > unsigned IDNS) { >> > > > assert(!LookupResult::isAvailableForLookup(SemaRef, D) && "not in >> > > > slow case"); >> > > > >> > > > - for (auto RD : D->redecls()) { >> > > > + for (auto *RD : D->redecls()) { >> > > > // Don't bother with extra checks if we already know this one >> > > > isn't visible. >> > > > if (RD == D) >> > > > continue; >> > > > @@ -2362,7 +2362,7 @@ static bool >> > > > LookupQualifiedNameInUsingDirectives(Sema &S, LookupResult &R, >> > > > continue; >> > > > } >> > > > >> > > > - for (auto I : ND->using_directives()) { >> > > > + for (auto *I : ND->using_directives()) { >> > > > NamespaceDecl *Nom = I->getNominatedNamespace(); >> > > > if (S.isVisible(I) && Visited.insert(Nom).second) >> > > > Queue.push_back(Nom); >> > > > @@ -4161,7 +4161,7 @@ class LookupVisibleHelper { >> > > > // Traverse using directives for qualified name lookup. >> > > > if (QualifiedNameLookup) { >> > > > ShadowContextRAII Shadow(Visited); >> > > > - for (auto I : Ctx->using_directives()) { >> > > > + for (auto *I : Ctx->using_directives()) { >> > > > if (!Result.getSema().isVisible(I)) >> > > > continue; >> > > > lookupInDeclContext(I->getNominatedNamespace(), Result, >> > > > >> > > > diff --git a/clang/lib/Sema/SemaObjCProperty.cpp >> > > > b/clang/lib/Sema/SemaObjCProperty.cpp >> > > > index 118afb81dd722..e915c7ed88a84 100644 >> > > > --- a/clang/lib/Sema/SemaObjCProperty.cpp >> > > > +++ b/clang/lib/Sema/SemaObjCProperty.cpp >> > > > @@ -1028,7 +1028,7 @@ static bool >> > > > hasWrittenStorageAttribute(ObjCPropertyDecl *Prop, >> > > > >> > > > // Find the corresponding property in the primary class definition. >> > > > auto OrigClass = Category->getClassInterface(); >> > > > - for (auto Found : OrigClass->lookup(Prop->getDeclName())) { >> > > > + for (auto *Found : OrigClass->lookup(Prop->getDeclName())) { >> > > > if (ObjCPropertyDecl *OrigProp = >> > > > dyn_cast<ObjCPropertyDecl>(Found)) >> > > > return OrigProp->getPropertyAttributesAsWritten() & >> > > > OwnershipMask; >> > > > } >> > > > >> > > > diff --git a/clang/lib/Sema/SemaOpenMP.cpp >> > > > b/clang/lib/Sema/SemaOpenMP.cpp >> > > > index a8de8c2f2c829..d05380b30e47f 100644 >> > > > --- a/clang/lib/Sema/SemaOpenMP.cpp >> > > > +++ b/clang/lib/Sema/SemaOpenMP.cpp >> > > > @@ -18422,7 +18422,7 @@ static T filterLookupForUDReductionAndMapper( >> > > > static NamedDecl *findAcceptableDecl(Sema &SemaRef, NamedDecl *D) { >> > > > assert(!LookupResult::isVisible(SemaRef, D) && "not in slow case"); >> > > > >> > > > - for (auto RD : D->redecls()) { >> > > > + for (auto *RD : D->redecls()) { >> > > > // Don't bother with extra checks if we already know this one >> > > > isn't visible. >> > > > if (RD == D) >> > > > continue; >> > > > >> > > > diff --git a/clang/lib/Sema/SemaOverload.cpp >> > > > b/clang/lib/Sema/SemaOverload.cpp >> > > > index 91e308d0d0fee..352738c850f23 100644 >> > > > --- a/clang/lib/Sema/SemaOverload.cpp >> > > > +++ b/clang/lib/Sema/SemaOverload.cpp >> > > > @@ -14204,7 +14204,7 @@ ExprResult >> > > > Sema::CreateOverloadedArraySubscriptExpr(SourceLocation LLoc, >> > > > MultiExprArg >> > > > ArgExpr) { >> > > > SmallVector<Expr *, 2> Args; >> > > > Args.push_back(Base); >> > > > - for (auto e : ArgExpr) { >> > > > + for (auto *e : ArgExpr) { >> > > > Args.push_back(e); >> > > > } >> > > > DeclarationName OpName = >> > > > >> > > > diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp >> > > > b/clang/lib/Sema/SemaTemplateDeduction.cpp >> > > > index e8837d88f97dd..3419eb1eec6b4 100644 >> > > > --- a/clang/lib/Sema/SemaTemplateDeduction.cpp >> > > > +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp >> > > > @@ -3147,7 +3147,7 @@ Sema::SubstituteExplicitTemplateArguments( >> > > > if (ExplicitTemplateArgs.size() == 0) { >> > > > // No arguments to substitute; just copy over the parameter types >> > > > and >> > > > // fill in the function type. >> > > > - for (auto P : Function->parameters()) >> > > > + for (auto *P : Function->parameters()) >> > > > ParamTypes.push_back(P->getType()); >> > > > >> > > > if (FunctionType) >> > > > >> > > > diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp >> > > > b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp >> > > > index 24ea3254cb272..b0256a16babe7 100644 >> > > > --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp >> > > > +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp >> > > > @@ -6398,7 +6398,7 @@ void Sema::PerformPendingInstantiations(bool >> > > > LocalOnly) { >> > > > >> > > > void Sema::PerformDependentDiagnostics(const DeclContext *Pattern, >> > > > const MultiLevelTemplateArgumentList >> > > > &TemplateArgs) { >> > > > - for (auto DD : Pattern->ddiags()) { >> > > > + for (auto *DD : Pattern->ddiags()) { >> > > > switch (DD->getKind()) { >> > > > case DependentDiagnostic::Access: >> > > > HandleDependentAccessCheck(*DD, TemplateArgs); >> > > > >> > > > diff --git a/clang/lib/Serialization/ASTReader.cpp >> > > > b/clang/lib/Serialization/ASTReader.cpp >> > > > index eef8f9fdb07f1..5d1ee45c10de5 100644 >> > > > --- a/clang/lib/Serialization/ASTReader.cpp >> > > > +++ b/clang/lib/Serialization/ASTReader.cpp >> > > > @@ -8032,7 +8032,7 @@ IdentifierInfo *ASTReader::get(StringRef Name) { >> > > > // lookups). Perform the lookup in PCH files, though, since we >> > > > don't build >> > > > // a complete initial identifier table if we're carrying on from a >> > > > PCH. >> > > > if (PP.getLangOpts().CPlusPlus) { >> > > > - for (auto F : ModuleMgr.pch_modules()) >> > > > + for (auto *F : ModuleMgr.pch_modules()) >> > > > if (Visitor(*F)) >> > > > break; >> > > > } else { >> > > > @@ -9645,7 +9645,7 @@ void ASTReader::diagnoseOdrViolations() { >> > > > bool Found = false; >> > > > const Decl *DCanon = D->getCanonicalDecl(); >> > > > >> > > > - for (auto RI : D->redecls()) { >> > > > + for (auto *RI : D->redecls()) { >> > > > if (RI->getLexicalDeclContext() == CanonDef) { >> > > > Found = true; >> > > > break; >> > > > >> > > > diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp >> > > > b/clang/lib/Serialization/ASTWriterDecl.cpp >> > > > index 35b8db27bd0eb..14985cc32d0e4 100644 >> > > > --- a/clang/lib/Serialization/ASTWriterDecl.cpp >> > > > +++ b/clang/lib/Serialization/ASTWriterDecl.cpp >> > > > @@ -167,7 +167,7 @@ namespace clang { >> > > > } >> > > > >> > > > Record.push_back(typeParams->size()); >> > > > - for (auto typeParam : *typeParams) { >> > > > + for (auto *typeParam : *typeParams) { >> > > > Record.AddDeclRef(typeParam); >> > > > } >> > > > Record.AddSourceLocation(typeParams->getLAngleLoc()); >> > > > @@ -661,7 +661,7 @@ void ASTDeclWriter::VisitFunctionDecl(FunctionDecl >> > > > *D) { >> > > > } >> > > > >> > > > Record.push_back(D->param_size()); >> > > > - for (auto P : D->parameters()) >> > > > + for (auto *P : D->parameters()) >> > > > Record.AddDeclRef(P); >> > > > Code = serialization::DECL_FUNCTION; >> > > > } >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp >> > > > b/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp >> > > > index fea35d03cb813..c9b17a56b224d 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp >> > > > @@ -118,7 +118,7 @@ void CFErrorFunctionChecker::checkASTDecl(const >> > > > FunctionDecl *D, >> > > > II = &D->getASTContext().Idents.get("CFErrorRef"); >> > > > >> > > > bool hasCFError = false; >> > > > - for (auto I : D->parameters()) { >> > > > + for (auto *I : D->parameters()) { >> > > > if (IsCFError(I->getType(), II)) { >> > > > hasCFError = true; >> > > > break; >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp >> > > > b/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp >> > > > index 1d8835f6b4741..8b4004d059e81 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Checkers/NullabilityChecker.cpp >> > > > @@ -907,7 +907,7 @@ void >> > > > NullabilityChecker::checkPostObjCMessage(const ObjCMethodCall &M, >> > > > // this class of methods reduced the emitted diagnostics by about >> > > > 30% on >> > > > // some projects (and all of that was false positives). >> > > > if (Name.contains("String")) { >> > > > - for (auto Param : M.parameters()) { >> > > > + for (auto *Param : M.parameters()) { >> > > > if (Param->getName() == "encoding") { >> > > > State = State->set<NullabilityMap>(ReturnRegion, >> > > > >> > > > Nullability::Contradicted); >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >> > > > b/clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >> > > > index 1aa665f0ef45d..fb90fc9c91ea3 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp >> > > > @@ -368,7 +368,7 @@ class StreamChecker : public >> > > > Checker<check::PreCall, eval::Call, >> > > > // (and matching name) as stream functions. >> > > > if (!Call.isGlobalCFunction()) >> > > > return nullptr; >> > > > - for (auto P : Call.parameters()) { >> > > > + for (auto *P : Call.parameters()) { >> > > > QualType T = P->getType(); >> > > > if (!T->isIntegralOrEnumerationType() && !T->isPointerType()) >> > > > return nullptr; >> > > > >> > > > diff --git >> > > > a/clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp >> > > > b/clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp >> > > > index 05f8f6084c0b6..0fa3d6043971f 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Checkers/UndefinedAssignmentChecker.cpp >> > > > @@ -92,7 +92,7 @@ void UndefinedAssignmentChecker::checkBind(SVal >> > > > location, SVal val, >> > > > if (const auto *CD = >> > > > >> > > > dyn_cast<CXXConstructorDecl>(C.getStackFrame()->getDecl())) { >> > > > if (CD->isImplicit()) { >> > > > - for (auto I : CD->inits()) { >> > > > + for (auto *I : CD->inits()) { >> > > > if (I->getInit()->IgnoreImpCasts() == StoreE) { >> > > > OS << "Value assigned to field '" << >> > > > I->getMember()->getName() >> > > > << "' in implicit constructor is garbage or undefined"; >> > > > >> > > > diff --git >> > > > a/clang/lib/StaticAnalyzer/Checkers/WebKit/NoUncountedMembersChecker.cpp >> > > > >> > > > b/clang/lib/StaticAnalyzer/Checkers/WebKit/NoUncountedMembersChecker.cpp >> > > > index 97f75135bf922..6b4615e189bcd 100644 >> > > > --- >> > > > a/clang/lib/StaticAnalyzer/Checkers/WebKit/NoUncountedMembersChecker.cpp >> > > > +++ >> > > > b/clang/lib/StaticAnalyzer/Checkers/WebKit/NoUncountedMembersChecker.cpp >> > > > @@ -69,7 +69,7 @@ class NoUncountedMemberChecker >> > > > if (shouldSkipDecl(RD)) >> > > > return; >> > > > >> > > > - for (auto Member : RD->fields()) { >> > > > + for (auto *Member : RD->fields()) { >> > > > const Type *MemberType = Member->getType().getTypePtrOrNull(); >> > > > if (!MemberType) >> > > > continue; >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp >> > > > b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp >> > > > index 3a8d69df7a641..57591960a1401 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Core/CallEvent.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Core/CallEvent.cpp >> > > > @@ -1124,7 +1124,7 @@ static const ObjCMethodDecl >> > > > *findDefiningRedecl(const ObjCMethodDecl *MD) { >> > > > >> > > > // Find the redeclaration that defines the method. >> > > > if (!MD->hasBody()) { >> > > > - for (auto I : MD->redecls()) >> > > > + for (auto *I : MD->redecls()) >> > > > if (I->hasBody()) >> > > > MD = cast<ObjCMethodDecl>(I); >> > > > } >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp >> > > > b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp >> > > > index de90f4a71be00..994de60a732a2 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp >> > > > @@ -616,7 +616,7 @@ void CoreEngine::enqueue(ExplodedNodeSet &Set, >> > > > } >> > > > >> > > > void CoreEngine::enqueueEndOfFunction(ExplodedNodeSet &Set, const >> > > > ReturnStmt *RS) { >> > > > - for (auto I : Set) { >> > > > + for (auto *I : Set) { >> > > > // If we are in an inlined call, generate CallExitBegin node. >> > > > if (I->getLocationContext()->getParent()) { >> > > > I = generateCallExitBeginNode(I, RS); >> > > > >> > > > diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp >> > > > b/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp >> > > > index 5a55e81497b03..25c36e9aea24d 100644 >> > > > --- a/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp >> > > > +++ b/clang/lib/StaticAnalyzer/Core/ExprEngineObjC.cpp >> > > > @@ -206,7 +206,7 @@ void ExprEngine::VisitObjCMessage(const >> > > > ObjCMessageExpr *ME, >> > > > ExplodedNodeSet dstPostCheckers; >> > > > >> > > > getCheckerManager().runCheckersForObjCMessageNil(dstPostCheckers, Pred, >> > > > *Msg, *this); >> > > > - for (auto I : dstPostCheckers) >> > > > + for (auto *I : dstPostCheckers) >> > > > finishArgumentConstruction(Dst, I, *Msg); >> > > > return; >> > > > } >> > > > @@ -270,7 +270,7 @@ void ExprEngine::VisitObjCMessage(const >> > > > ObjCMessageExpr *ME, >> > > > >> > > > // If there were constructors called for object-type arguments, >> > > > clean them up. >> > > > ExplodedNodeSet dstArgCleanup; >> > > > - for (auto I : dstEval) >> > > > + for (auto *I : dstEval) >> > > > finishArgumentConstruction(dstArgCleanup, I, *Msg); >> > > > >> > > > ExplodedNodeSet dstPostvisit; >> > > > >> > > > diff --git a/clang/lib/Tooling/Tooling.cpp >> > > > b/clang/lib/Tooling/Tooling.cpp >> > > > index 65d8508424320..a76046ae79193 100644 >> > > > --- a/clang/lib/Tooling/Tooling.cpp >> > > > +++ b/clang/lib/Tooling/Tooling.cpp >> > > > @@ -98,7 +98,7 @@ static bool ignoreExtraCC1Commands(const >> > > > driver::Compilation *Compilation) { >> > > > OffloadCompilation = true; >> > > > >> > > > if (Jobs.size() > 1) { >> > > > - for (auto A : Actions){ >> > > > + for (auto *A : Actions){ >> > > > // On MacOSX real actions may end up being wrapped in >> > > > BindArchAction >> > > > if (isa<driver::BindArchAction>(A)) >> > > > A = *A->input_begin(); >> > > > >> > > > >> > > > >> > > > _______________________________________________ >> > > > cfe-commits mailing list >> > > > cfe-commits@lists.llvm.org >> > > > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > > _______________________________________________ >> > > cfe-commits mailing list >> > > cfe-commits@lists.llvm.org >> > > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits