[clang] b7a7aee - [clang] Qualify auto in range-based for loops (NFC)

Kazu Hirata via cfe-commits cfe-commits at lists.llvm.org
Sat Sep 10 15:01:12 PDT 2022


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.

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.

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,

Kazu Hirata


On Fri, Sep 9, 2022 at 5:27 AM Aaron Ballman <aaron at aaronballman.com> wrote:

> On Thu, Sep 8, 2022 at 12:37 PM David Blaikie <dblaikie at 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 at 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 at 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 at lists.llvm.org
> > > > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> > > _______________________________________________
> > > cfe-commits mailing list
> > > cfe-commits at lists.llvm.org
> > > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220910/ea054dad/attachment-0001.html>


More information about the cfe-commits mailing list