reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
 1304   Expr *TransformedExpr = getDerived().TransformExpr(LH->getValue()).get();
tools/clang/lib/Sema/TreeTransform.h
  188       OldLocation = Self.getDerived().getBaseLocation();
  189       OldEntity = Self.getDerived().getBaseEntity();
  192         Self.getDerived().setBase(Location, Entity);
  196       Self.getDerived().setBase(OldLocation, OldEntity);
  469     return getDerived().TransformDecl(Loc, D);
  482     return cast_or_null<NamedDecl>(getDerived().TransformDecl(Loc, D));
  601                        getDerived().getBaseLocation());
 1005     TemplateName InstName = getDerived().RebuildTemplateName(
 1022     getDerived().RebuildTemplateSpecializationType(InstName, NameLoc, Args);
 2559       return getDerived().RebuildCXXStaticCastExpr(OpLoc, LAngleLoc, TInfo,
 2564       return getDerived().RebuildCXXDynamicCastExpr(OpLoc, LAngleLoc, TInfo,
 2569       return getDerived().RebuildCXXReinterpretCastExpr(OpLoc, LAngleLoc, TInfo,
 2575       return getDerived().RebuildCXXConstCastExpr(OpLoc, LAngleLoc, TInfo,
 3397       ExprResult E = getDerived().TransformExpr(cast<Expr>(S));
 3475     return getDerived().TransformExpr(Init);
 3480     return getDerived().RebuildParenListExpr(Parens.getBegin(), None,
 3486     return getDerived().RebuildParenListExpr(SourceLocation(), None,
 3492     return getDerived().TransformExpr(Init);
 3506   if (getDerived().TransformExprs(Construct->getArgs(), Construct->getNumArgs(),
 3512     return getDerived().RebuildInitList(Construct->getBeginLoc(), NewArgs,
 3524   return getDerived().RebuildParenListExpr(Parens.getBegin(), NewArgs,
 3536     if (IsCall && getDerived().DropCallArgument(Inputs[I])) {
 3556       if (getDerived().TryExpandParameterPacks(Expansion->getEllipsisLoc(),
 3568         ExprResult OutPattern = getDerived().TransformExpr(Pattern);
 3572         ExprResult Out = getDerived().RebuildPackExpansion(OutPattern.get(),
 3592         ExprResult Out = getDerived().TransformExpr(Pattern);
 3597           Out = getDerived().RebuildPackExpansion(
 3609         ForgetPartiallySubstitutedPackRAII Forget(getDerived());
 3611         ExprResult Out = getDerived().TransformExpr(Pattern);
 3615         Out = getDerived().RebuildPackExpansion(
 3627       IsCall ? getDerived().TransformInitializer(Inputs[I], /*DirectInit*/false)
 3628              : getDerived().TransformExpr(Inputs[I]);
 3646         getDerived().TransformDefinition(Var->getLocation(), Var));
 3655     ExprResult CondExpr = getDerived().TransformExpr(Expr);
 3695                                     getDerived().TransformDecl(
 3705                       getDerived().TransformDecl(Q.getLocalBeginLoc(),
 3720           cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
 3764       !getDerived().AlwaysRebuild())
 3798         getDerived().TransformDecl(NameInfo.getLoc(), OldTemplate));
 3814       NewTInfo = getDerived().TransformType(OldTInfo);
 3822       QualType NewT = getDerived().TransformType(Name.getCXXNameType());
 3854       = cast_or_null<TemplateDecl>(getDerived().TransformDecl(NameLoc,
 3859     if (!getDerived().AlwaysRebuild() &&
 3864     return getDerived().RebuildTemplateName(SS, QTN->hasTemplateKeyword(),
 3875     if (!getDerived().AlwaysRebuild() &&
 3884       return getDerived().RebuildTemplateName(SS,
 3893     return getDerived().RebuildTemplateName(SS, TemplateKWLoc,
 3900       = cast_or_null<TemplateDecl>(getDerived().TransformDecl(NameLoc,
 3905     if (!getDerived().AlwaysRebuild() &&
 3916             getDerived().TransformDecl(NameLoc, SubstPack->getParameterPack()));
 3920     if (!getDerived().AlwaysRebuild() &&
 3924     return getDerived().RebuildTemplateName(TransParam,
 3936   SourceLocation Loc = getDerived().getBaseLocation();
 4000     DI = getDerived().TransformType(DI);
 4010       QualifierLoc = getDerived().TransformNestedNameSpecifierLoc(QualifierLoc);
 4018       = getDerived().TransformTemplateName(SS, Arg.getAsTemplate(),
 4043     ExprResult E = getDerived().TransformExpr(InputExpr);
 4160       if (getDerived().TryExpandParameterPacks(Ellipsis,
 4174         if (getDerived().TransformTemplateArgument(Pattern, OutPattern, Uneval))
 4177         Out = getDerived().RebuildPackExpansion(OutPattern, Ellipsis,
 4191         if (getDerived().TransformTemplateArgument(Pattern, Out, Uneval))
 4195           Out = getDerived().RebuildPackExpansion(Out, Ellipsis,
 4207         ForgetPartiallySubstitutedPackRAII Forget(getDerived());
 4209         if (getDerived().TransformTemplateArgument(Pattern, Out, Uneval))
 4212         Out = getDerived().RebuildPackExpansion(Out, Ellipsis,
 4224     if (getDerived().TransformTemplateArgument(In, Out, Uneval))
 4240   if (getDerived().AlreadyTransformed(T))
 4246                                                 getDerived().getBaseLocation());
 4248   TypeSourceInfo *NewDI = getDerived().TransformType(DI);
 4260                        getDerived().getBaseEntity());
 4261   if (getDerived().AlreadyTransformed(DI->getType()))
 4269   QualType Result = getDerived().TransformType(TLB, TL);
 4312                        getDerived().getBaseEntity());
 4313   if (getDerived().AlreadyTransformed(DI->getType()))
 4327   QualType Result = getDerived().TransformDependentNameType(
 4333     Result = getDerived().RebuildQualifiedType(Result, QTL);
 4346   QualType Result = getDerived().TransformType(TLB, T.getUnqualifiedLoc());
 4350   Result = getDerived().RebuildQualifiedType(Result, T);
 4446   if (getDerived().AlreadyTransformed(TL.getType()))
 4462   if (getDerived().AlreadyTransformed(TSInfo->getType()))
 4474   assert(!getDerived().AlreadyTransformed(T));
 4483     TemplateName Template = getDerived().TransformTemplateName(
 4489     Result = getDerived().TransformTemplateSpecializationType(TLB, SpecTL,
 4496       = getDerived().RebuildTemplateName(SS,
 4505     Result = getDerived().TransformDependentTemplateSpecializationType(TLB,
 4511     Result = getDerived().TransformType(TLB, TL);
 4548   return getDerived().TransformType(TLB, TL.getOriginalLoc());
 4554   QualType OriginalType = getDerived().TransformType(TLB, TL.getOriginalLoc());
 4559   if (getDerived().AlwaysRebuild() ||
 4579     = getDerived().TransformType(TLB, TL.getPointeeLoc());
 4599   if (getDerived().AlwaysRebuild() ||
 4601     Result = getDerived().RebuildPointerType(PointeeType, TL.getSigilLoc());
 4620     = getDerived().TransformType(TLB, TL.getPointeeLoc());
 4628   if (getDerived().AlwaysRebuild() ||
 4630     Result = getDerived().RebuildBlockPointerType(PointeeType,
 4652   QualType PointeeType = getDerived().TransformType(TLB, TL.getPointeeLoc());
 4660   if (getDerived().AlwaysRebuild() ||
 4662     Result = getDerived().RebuildReferenceType(PointeeType,
 4703   QualType PointeeType = getDerived().TransformType(TLB, TL.getPointeeLoc());
 4710     NewClsTInfo = getDerived().TransformType(OldClsTInfo);
 4721     NewClsType = getDerived().TransformType(OldClsType);
 4727   if (getDerived().AlwaysRebuild() ||
 4730     Result = getDerived().RebuildMemberPointerType(PointeeType, NewClsType,
 4756   QualType ElementType = getDerived().TransformType(TLB, TL.getElementLoc());
 4768     NewSize = getDerived().TransformExpr(OldSize).template getAs<Expr>();
 4773   if (getDerived().AlwaysRebuild() ||
 4776     Result = getDerived().RebuildConstantArrayType(ElementType,
 4802   QualType ElementType = getDerived().TransformType(TLB, TL.getElementLoc());
 4807   if (getDerived().AlwaysRebuild() ||
 4809     Result = getDerived().RebuildIncompleteArrayType(ElementType,
 4830   QualType ElementType = getDerived().TransformType(TLB, TL.getElementLoc());
 4838     SizeResult = getDerived().TransformExpr(T->getSizeExpr());
 4850   if (getDerived().AlwaysRebuild() ||
 4853     Result = getDerived().RebuildVariableArrayType(ElementType,
 4877   QualType ElementType = getDerived().TransformType(TLB, TL.getElementLoc());
 4890     = getDerived().TransformExpr(origSize);
 4898   if (getDerived().AlwaysRebuild() ||
 4901     Result = getDerived().RebuildDependentSizedArrayType(ElementType,
 4924   QualType ElementType = getDerived().TransformType(T->getElementType());
 4931   ExprResult Size = getDerived().TransformExpr(T->getSizeExpr());
 4937   if (getDerived().AlwaysRebuild() || ElementType != T->getElementType() ||
 4939     Result = getDerived().RebuildDependentVectorType(
 4965   QualType ElementType = getDerived().TransformType(T->getElementType());
 4973   ExprResult Size = getDerived().TransformExpr(T->getSizeExpr());
 4979   if (getDerived().AlwaysRebuild() ||
 4982     Result = getDerived().RebuildDependentSizedExtVectorType(ElementType,
 5007   QualType pointeeType = getDerived().TransformType(T->getPointeeType());
 5016   ExprResult AddrSpace = getDerived().TransformExpr(T->getAddrSpaceExpr());
 5022   if (getDerived().AlwaysRebuild() || pointeeType != T->getPointeeType() ||
 5024     Result = getDerived().RebuildDependentAddressSpaceType(
 5041         Result, getDerived().getBaseLocation());
 5052   QualType ElementType = getDerived().TransformType(T->getElementType());
 5057   if (getDerived().AlwaysRebuild() ||
 5059     Result = getDerived().RebuildVectorType(ElementType, T->getNumElements(),
 5075   QualType ElementType = getDerived().TransformType(T->getElementType());
 5080   if (getDerived().AlwaysRebuild() ||
 5082     Result = getDerived().RebuildExtVectorType(ElementType,
 5112     QualType Result = getDerived().TransformType(TLB,
 5129     NewDI = getDerived().TransformType(OldDI);
 5184         if (getDerived().TryExpandParameterPacks(ExpansionTL.getEllipsisLoc(),
 5196           getDerived().ExpandingFunctionParameterPack(OldParm);
 5200               = getDerived().TransformFunctionTypeParam(OldParm,
 5217             ForgetPartiallySubstitutedPackRAII Forget(getDerived());
 5219               = getDerived().TransformFunctionTypeParam(OldParm,
 5246         NewParm = getDerived().TransformFunctionTypeParam(OldParm,
 5251         NewParm = getDerived().TransformFunctionTypeParam(
 5282       if (getDerived().TryExpandParameterPacks(Loc, SourceRange(),
 5295           QualType NewType = getDerived().TransformType(Pattern);
 5321         ForgetPartiallySubstitutedPackRAII Forget(getDerived());
 5322         QualType NewType = getDerived().TransformType(Pattern);
 5338       NewType = getDerived().TransformType(OldType);
 5340       NewType = getDerived().TransformType(OldType);
 5374   return getDerived().TransformFunctionProtoType(
 5402     if (getDerived().TransformFunctionTypeParams(
 5418       ResultType = getDerived().TransformType(TLB, TL.getReturnLoc());
 5424     ResultType = getDerived().TransformType(TLB, TL.getReturnLoc());
 5428     if (getDerived().TransformFunctionTypeParams(
 5457   if (getDerived().AlwaysRebuild() || ResultType != T->getReturnType() ||
 5459     Result = getDerived().RebuildFunctionProtoType(ResultType, ParamTypes, EPI);
 5486     ExprResult NoexceptExpr = getDerived().TransformExpr(ESI.NoexceptExpr);
 5525       if (getDerived().TryExpandParameterPacks(
 5535         QualType U = getDerived().TransformType(PackExpansion->getPattern());
 5549         QualType U = getDerived().TransformType(PackExpansion->getPattern());
 5556       QualType U = getDerived().TransformType(T);
 5577   QualType ResultType = getDerived().TransformType(TLB, TL.getReturnLoc());
 5582   if (getDerived().AlwaysRebuild() || ResultType != T->getReturnType())
 5583     Result = getDerived().RebuildFunctionNoProtoType(ResultType);
 5598   Decl *D = getDerived().TransformDecl(TL.getNameLoc(), T->getDecl());
 5603   if (getDerived().AlwaysRebuild() || D != T->getDecl()) {
 5604     Result = getDerived().RebuildUnresolvedUsingType(TL.getNameLoc(), D);
 5622     = cast_or_null<TypedefNameDecl>(getDerived().TransformDecl(TL.getNameLoc(),
 5628   if (getDerived().AlwaysRebuild() ||
 5630     Result = getDerived().RebuildTypedefType(Typedef);
 5649   ExprResult E = getDerived().TransformExpr(TL.getUnderlyingExpr());
 5658   if (getDerived().AlwaysRebuild() ||
 5660     Result = getDerived().RebuildTypeOfExprType(E.get(), TL.getTypeofLoc());
 5678   TypeSourceInfo* New_Under_TI = getDerived().TransformType(Old_Under_TI);
 5683   if (getDerived().AlwaysRebuild() || New_Under_TI != Old_Under_TI) {
 5684     Result = getDerived().RebuildTypeOfType(New_Under_TI->getType());
 5708   ExprResult E = getDerived().TransformExpr(T->getUnderlyingExpr());
 5717   if (getDerived().AlwaysRebuild() ||
 5719     Result = getDerived().RebuildDecltypeType(E.get(), TL.getNameLoc());
 5739       getDerived().TransformType(TL.getUnderlyingTInfo())->getType();
 5740     Result = getDerived().RebuildUnaryTransformType(NewBase,
 5761     NewDeduced = getDerived().TransformType(OldDeduced);
 5767   if (getDerived().AlwaysRebuild() || NewDeduced != OldDeduced ||
 5769     Result = getDerived().RebuildAutoType(NewDeduced, T->getKeyword());
 5786   TemplateName TemplateName = getDerived().TransformTemplateName(
 5794     NewDeduced = getDerived().TransformType(OldDeduced);
 5799   QualType Result = getDerived().RebuildDeducedTemplateSpecializationType(
 5816     = cast_or_null<RecordDecl>(getDerived().TransformDecl(TL.getNameLoc(),
 5822   if (getDerived().AlwaysRebuild() ||
 5824     Result = getDerived().RebuildRecordType(Record);
 5840     = cast_or_null<EnumDecl>(getDerived().TransformDecl(TL.getNameLoc(),
 5846   if (getDerived().AlwaysRebuild() ||
 5848     Result = getDerived().RebuildEnumType(Enum);
 5863   Decl *D = getDerived().TransformDecl(TL.getNameLoc(),
 5889   QualType Replacement = getDerived().TransformType(T->getReplacementType());
 5924     = getDerived().TransformTemplateName(SS, T->getTemplateName(),
 5929   return getDerived().TransformTemplateSpecializationType(TLB, TL, Template);
 5935   QualType ValueType = getDerived().TransformType(TLB, TL.getValueLoc());
 5940   if (getDerived().AlwaysRebuild() ||
 5942     Result = getDerived().RebuildAtomicType(ValueType, TL.getKWLoc());
 5958   QualType ValueType = getDerived().TransformType(TLB, TL.getValueLoc());
 5963   if (getDerived().AlwaysRebuild() || ValueType != TL.getValueLoc().getType()) {
 5966     Result = getDerived().RebuildPipeType(ValueType, TL.getKWLoc(), isReadPipe);
 6052   if (getDerived().TransformTemplateArguments(ArgIterator(TL, 0),
 6060     getDerived().RebuildTemplateSpecializationType(Template,
 6107   if (getDerived().TransformTemplateArguments(ArgIterator(TL, 0),
 6136     = getDerived().RebuildTemplateSpecializationType(Template,
 6165       = getDerived().TransformNestedNameSpecifierLoc(TL.getQualifierLoc());
 6170   QualType NamedT = getDerived().TransformType(TLB, TL.getNamedTypeLoc());
 6194   if (getDerived().AlwaysRebuild() ||
 6197     Result = getDerived().RebuildElaboratedType(TL.getElaboratedKeywordLoc(),
 6215   QualType modifiedType = getDerived().TransformType(TLB, TL.getModifiedLoc());
 6221   const Attr *newAttr = oldAttr ? getDerived().TransformAttr(oldAttr) : nullptr;
 6228   if (getDerived().AlwaysRebuild() ||
 6233       = getDerived().TransformType(oldType->getEquivalentType());
 6262   QualType Inner = getDerived().TransformType(TLB, TL.getInnerLoc());
 6267   if (getDerived().AlwaysRebuild() ||
 6269     Result = getDerived().RebuildParenType(Inner);
 6284   QualType Inner = getDerived().TransformType(TLB, TL.getInnerLoc());
 6289   if (getDerived().AlwaysRebuild() || Inner != TL.getInnerLoc().getType()) {
 6291         getDerived().RebuildMacroQualifiedType(Inner, TL.getMacroIdentifier());
 6313     = getDerived().TransformNestedNameSpecifierLoc(TL.getQualifierLoc());
 6318     = getDerived().RebuildDependentNameType(T->getKeyword(),
 6350       = getDerived().TransformNestedNameSpecifierLoc(TL.getQualifierLoc());
 6355   return getDerived()
 6372   if (getDerived().TransformTemplateArguments(ArgIterator(TL, 0),
 6377   QualType Result = getDerived().RebuildDependentTemplateSpecializationType(
 6429     = getDerived().TransformType(TLB, TL.getPatternLoc());
 6434   if (getDerived().AlwaysRebuild() ||
 6436     Result = getDerived().RebuildPackExpansionType(Pattern,
 6464       getDerived().TransformDecl(T->getDecl()->getLocation(), T->getDecl()));
 6469   if (getDerived().AlwaysRebuild() ||
 6471     Result = getDerived().RebuildObjCTypeParamType(OTP,
 6496   QualType BaseType = getDerived().TransformType(TLB, TL.getBaseLoc());
 6525       if (getDerived().TryExpandParameterPacks(
 6538         QualType NewPatternType = getDerived().TransformType(TypeArgBuilder,
 6560         QualType NewTypeArg = getDerived().TransformType(TypeArgBuilder,
 6574     QualType NewTypeArg = getDerived().TransformType(TypeArgBuilder, TypeArgLoc);
 6590   if (getDerived().AlwaysRebuild() || AnyChanged) {
 6592     Result = getDerived().RebuildObjCObjectType(
 6619   QualType PointeeType = getDerived().TransformType(TLB, TL.getPointeeLoc());
 6624   if (getDerived().AlwaysRebuild() ||
 6626     Result = getDerived().RebuildObjCObjectPointerType(PointeeType,
 6649   return getDerived().TransformCompoundStmt(S, false);
 6663     StmtResult Result = getDerived().TransformStmt(
 6684   if (!getDerived().AlwaysRebuild() &&
 6688   return getDerived().RebuildCompoundStmt(S->getLBracLoc(),
 6703     LHS = getDerived().TransformExpr(S->getLHS());
 6709     RHS = getDerived().TransformExpr(S->getRHS());
 6718   StmtResult Case = getDerived().RebuildCaseStmt(S->getCaseLoc(),
 6728       getDerived().TransformStmt(S->getSubStmt());
 6733   return getDerived().RebuildCaseStmtBody(Case.get(), SubStmt.get());
 6740       getDerived().TransformStmt(S->getSubStmt());
 6745   return getDerived().RebuildDefaultStmt(S->getDefaultLoc(), S->getColonLoc(),
 6752   StmtResult SubStmt = getDerived().TransformStmt(S->getSubStmt(), SDK);
 6756   Decl *LD = getDerived().TransformDecl(S->getDecl()->getLocation(),
 6768   return getDerived().RebuildLabelStmt(S->getIdentLoc(),
 6799     const Attr *R = getDerived().TransformAttr(I);
 6804   StmtResult SubStmt = getDerived().TransformStmt(S->getSubStmt(), SDK);
 6811   return getDerived().RebuildAttributedStmt(S->getAttrLoc(), Attrs,
 6819   StmtResult Init = getDerived().TransformStmt(S->getInit());
 6824   Sema::ConditionResult Cond = getDerived().TransformCondition(
 6839     Then = getDerived().TransformStmt(S->getThen());
 6849     Else = getDerived().TransformStmt(S->getElse());
 6854   if (!getDerived().AlwaysRebuild() &&
 6861   return getDerived().RebuildIfStmt(S->getIfLoc(), S->isConstexpr(), Cond,
 6870   StmtResult Init = getDerived().TransformStmt(S->getInit());
 6875   Sema::ConditionResult Cond = getDerived().TransformCondition(
 6883     = getDerived().RebuildSwitchStmtStart(S->getSwitchLoc(), Init.get(), Cond);
 6888   StmtResult Body = getDerived().TransformStmt(S->getBody());
 6893   return getDerived().RebuildSwitchStmtBody(S->getSwitchLoc(), Switch.get(),
 6901   Sema::ConditionResult Cond = getDerived().TransformCondition(
 6908   StmtResult Body = getDerived().TransformStmt(S->getBody());
 6912   if (!getDerived().AlwaysRebuild() &&
 6917   return getDerived().RebuildWhileStmt(S->getWhileLoc(), Cond, Body.get());
 6924   StmtResult Body = getDerived().TransformStmt(S->getBody());
 6929   ExprResult Cond = getDerived().TransformExpr(S->getCond());
 6933   if (!getDerived().AlwaysRebuild() &&
 6938   return getDerived().RebuildDoStmt(S->getDoLoc(), Body.get(), S->getWhileLoc(),
 6950   StmtResult Init = getDerived().TransformStmt(S->getInit());
 6960   Sema::ConditionResult Cond = getDerived().TransformCondition(
 6967   ExprResult Inc = getDerived().TransformExpr(S->getInc());
 6976   StmtResult Body = getDerived().TransformStmt(S->getBody());
 6980   if (!getDerived().AlwaysRebuild() &&
 6987   return getDerived().RebuildForStmt(S->getForLoc(), S->getLParenLoc(),
 6995   Decl *LD = getDerived().TransformDecl(S->getLabel()->getLocation(),
 7001   return getDerived().RebuildGotoStmt(S->getGotoLoc(), S->getLabelLoc(),
 7008   ExprResult Target = getDerived().TransformExpr(S->getTarget());
 7013   if (!getDerived().AlwaysRebuild() &&
 7017   return getDerived().RebuildIndirectGotoStmt(S->getGotoLoc(), S->getStarLoc(),
 7036   ExprResult Result = getDerived().TransformInitializer(S->getRetValue(),
 7043   return getDerived().RebuildReturnStmt(S->getReturnLoc(), Result.get());
 7052     Decl *Transformed = getDerived().TransformDefinition(D->getLocation(), D);
 7062   if (!getDerived().AlwaysRebuild() && !DeclChanged)
 7065   return getDerived().RebuildDeclStmt(Decls, S->getBeginLoc(), S->getEndLoc());
 7090     ExprResult Result = getDerived().TransformExpr(OutputExpr);
 7108     ExprResult Result = getDerived().TransformExpr(InputExpr);
 7121     ExprResult Result = getDerived().TransformExpr(S->getLabelExpr(I));
 7127   if (!getDerived().AlwaysRebuild() && !ExprsChanged)
 7136   return getDerived().RebuildGCCAsmStmt(S->getAsmLoc(), S->isSimple(),
 7156     ExprResult Result = getDerived().TransformExpr(SrcExprs[i]);
 7166   if (!HadChange && !getDerived().AlwaysRebuild())
 7169   return getDerived().RebuildMSAsmStmt(S->getAsmLoc(), S->getLBraceLoc(),
 7200   getDerived().transformedLocalDecl(S->getPromiseDecl(), {Promise});
 7205   StmtResult InitSuspend = getDerived().TransformStmt(S->getInitSuspendStmt());
 7209       getDerived().TransformStmt(S->getFinalSuspendStmt());
 7215   StmtResult BodyRes = getDerived().TransformStmt(S->getBody());
 7225   ExprResult Res = getDerived().TransformInitializer(ReturnObject,
 7250       StmtResult Res = getDerived().TransformStmt(OnFallthrough);
 7257       StmtResult Res = getDerived().TransformStmt(OnException);
 7264       StmtResult Res = getDerived().TransformStmt(OnAllocFailure);
 7273     ExprResult AllocRes = getDerived().TransformExpr(S->getAllocate());
 7278     ExprResult DeallocRes = getDerived().TransformExpr(S->getDeallocate());
 7284     StmtResult ResultDecl = getDerived().TransformStmt(S->getResultDecl());
 7290       StmtResult Res = getDerived().TransformStmt(ReturnStmt);
 7297   return getDerived().RebuildCoroutineBodyStmt(Builder);
 7303   ExprResult Result = getDerived().TransformInitializer(S->getOperand(),
 7310   return getDerived().RebuildCoreturnStmt(S->getKeywordLoc(), Result.get(),
 7317   ExprResult Result = getDerived().TransformInitializer(E->getOperand(),
 7324   return getDerived().RebuildCoawaitExpr(E->getKeywordLoc(), Result.get(),
 7331   ExprResult OperandResult = getDerived().TransformInitializer(E->getOperand(),
 7336   ExprResult LookupResult = getDerived().TransformUnresolvedLookupExpr(
 7344   return getDerived().RebuildDependentCoawaitExpr(
 7352   ExprResult Result = getDerived().TransformInitializer(E->getOperand(),
 7359   return getDerived().RebuildCoyieldExpr(E->getKeywordLoc(), Result.get());
 7368   StmtResult TryBody = getDerived().TransformStmt(S->getTryBody());
 7376     StmtResult Catch = getDerived().TransformStmt(S->getCatchStmt(I));
 7387     Finally = getDerived().TransformStmt(S->getFinallyStmt());
 7393   if (!getDerived().AlwaysRebuild() &&
 7400   return getDerived().RebuildObjCAtTryStmt(S->getAtTryLoc(), TryBody.get(),
 7412       TSInfo = getDerived().TransformType(FromVar->getTypeSourceInfo());
 7421       T = getDerived().TransformType(FromVar->getType());
 7426     Var = getDerived().RebuildObjCExceptionDecl(FromVar, TSInfo, T);
 7431   StmtResult Body = getDerived().TransformStmt(S->getCatchBody());
 7435   return getDerived().RebuildObjCAtCatchStmt(S->getAtCatchLoc(),
 7444   StmtResult Body = getDerived().TransformStmt(S->getFinallyBody());
 7449   if (!getDerived().AlwaysRebuild() &&
 7454   return getDerived().RebuildObjCAtFinallyStmt(S->getAtFinallyLoc(),
 7463     Operand = getDerived().TransformExpr(S->getThrowExpr());
 7468   if (!getDerived().AlwaysRebuild() &&
 7472   return getDerived().RebuildObjCAtThrowStmt(S->getThrowLoc(), Operand.get());
 7480   ExprResult Object = getDerived().TransformExpr(S->getSynchExpr());
 7484     getDerived().RebuildObjCAtSynchronizedOperand(S->getAtSynchronizedLoc(),
 7490   StmtResult Body = getDerived().TransformStmt(S->getSynchBody());
 7495   if (!getDerived().AlwaysRebuild() &&
 7501   return getDerived().RebuildObjCAtSynchronizedStmt(S->getAtSynchronizedLoc(),
 7510   StmtResult Body = getDerived().TransformStmt(S->getSubStmt());
 7515   if (!getDerived().AlwaysRebuild() &&
 7520   return getDerived().RebuildObjCAutoreleasePoolStmt(
 7530       getDerived().TransformStmt(S->getElement(), SDK_NotDiscarded);
 7535   ExprResult Collection = getDerived().TransformExpr(S->getCollection());
 7540   StmtResult Body = getDerived().TransformStmt(S->getBody());
 7545   if (!getDerived().AlwaysRebuild() &&
 7552   return getDerived().RebuildObjCForCollectionStmt(S->getForLoc(),
 7565         getDerived().TransformType(ExceptionDecl->getTypeSourceInfo());
 7569     Var = getDerived().RebuildExceptionDecl(
 7577   StmtResult Handler = getDerived().TransformStmt(S->getHandlerBlock());
 7581   if (!getDerived().AlwaysRebuild() && !Var &&
 7585   return getDerived().RebuildCXXCatchStmt(S->getCatchLoc(), Var, Handler.get());
 7591   StmtResult TryBlock = getDerived().TransformCompoundStmt(S->getTryBlock());
 7599     StmtResult Handler = getDerived().TransformCXXCatchStmt(S->getHandler(I));
 7607   if (!getDerived().AlwaysRebuild() && TryBlock.get() == S->getTryBlock() &&
 7611   return getDerived().RebuildCXXTryStmt(S->getTryLoc(), TryBlock.get(),
 7619       S->getInit() ? getDerived().TransformStmt(S->getInit()) : StmtResult();
 7623   StmtResult Range = getDerived().TransformStmt(S->getRangeStmt());
 7627   StmtResult Begin = getDerived().TransformStmt(S->getBeginStmt());
 7630   StmtResult End = getDerived().TransformStmt(S->getEndStmt());
 7634   ExprResult Cond = getDerived().TransformExpr(S->getCond());
 7644   ExprResult Inc = getDerived().TransformExpr(S->getInc());
 7650   StmtResult LoopVar = getDerived().TransformStmt(S->getLoopVarStmt());
 7655   if (getDerived().AlwaysRebuild() ||
 7663     NewStmt = getDerived().RebuildCXXForRangeStmt(S->getForLoc(),
 7674   StmtResult Body = getDerived().TransformStmt(S->getBody());
 7681     NewStmt = getDerived().RebuildCXXForRangeStmt(S->getForLoc(),
 7706       = getDerived().TransformNestedNameSpecifierLoc(S->getQualifierLoc());
 7714     NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
 7720   if (!getDerived().AlwaysRebuild() &&
 7751   StmtResult SubStmt = getDerived().TransformCompoundStmt(S->getSubStmt());
 7760   return getDerived().RebuildMSDependentExistsStmt(S->getKeywordLoc(),
 7773     = getDerived().TransformNestedNameSpecifierLoc(E->getQualifierLoc());
 7779     getDerived().TransformDecl(E->getMemberLoc(), E->getPropertyDecl()));
 7783   ExprResult Base = getDerived().TransformExpr(E->getBaseExpr());
 7796   auto BaseRes = getDerived().TransformExpr(E->getBase());
 7799   auto IdxRes = getDerived().TransformExpr(E->getIdx());
 7803   if (!getDerived().AlwaysRebuild() &&
 7808   return getDerived().RebuildArraySubscriptExpr(
 7814   StmtResult TryBlock = getDerived().TransformCompoundStmt(S->getTryBlock());
 7818   StmtResult Handler = getDerived().TransformSEHHandler(S->getHandler());
 7822   if (!getDerived().AlwaysRebuild() && TryBlock.get() == S->getTryBlock() &&
 7826   return getDerived().RebuildSEHTryStmt(S->getIsCXXTry(), S->getTryLoc(),
 7832   StmtResult Block = getDerived().TransformCompoundStmt(S->getBlock());
 7836   return getDerived().RebuildSEHFinallyStmt(S->getFinallyLoc(), Block.get());
 7841   ExprResult FilterExpr = getDerived().TransformExpr(S->getFilterExpr());
 7845   StmtResult Block = getDerived().TransformCompoundStmt(S->getBlock());
 7849   return getDerived().RebuildSEHExceptStmt(S->getExceptLoc(), FilterExpr.get(),
 7856     return getDerived().TransformSEHFinallyStmt(cast<SEHFinallyStmt>(Handler));
 7858     return getDerived().TransformSEHExceptStmt(cast<SEHExceptStmt>(Handler));
 7881       getDerived().getSema().StartOpenMPClause((*I)->getClauseKind());
 7882       OMPClause *Clause = getDerived().TransformOMPClause(*I);
 7883       getDerived().getSema().EndOpenMPClause();
 7892     getDerived().getSema().ActOnOpenMPRegionStart(D->getDirectiveKind(),
 7898       Body = getDerived().TransformStmt(CS);
 7901         getDerived().getSema().ActOnOpenMPRegionEnd(Body, TClauses);
 7914     DirName = getDerived().TransformDeclarationNameInfo(DirName);
 7923   return getDerived().RebuildOMPExecutableDirective(
 7932   getDerived().getSema().StartOpenMPDSABlock(OMPD_parallel, DirName, nullptr,
 7934   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7935   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7943   getDerived().getSema().StartOpenMPDSABlock(OMPD_simd, DirName, nullptr,
 7945   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7946   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7954   getDerived().getSema().StartOpenMPDSABlock(OMPD_for, DirName, nullptr,
 7956   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7957   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7965   getDerived().getSema().StartOpenMPDSABlock(OMPD_for_simd, DirName, nullptr,
 7967   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7968   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7976   getDerived().getSema().StartOpenMPDSABlock(OMPD_sections, DirName, nullptr,
 7978   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7979   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7987   getDerived().getSema().StartOpenMPDSABlock(OMPD_section, DirName, nullptr,
 7989   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 7990   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 7998   getDerived().getSema().StartOpenMPDSABlock(OMPD_single, DirName, nullptr,
 8000   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8001   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8009   getDerived().getSema().StartOpenMPDSABlock(OMPD_master, DirName, nullptr,
 8011   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8012   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8019   getDerived().getSema().StartOpenMPDSABlock(
 8021   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8022   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8030   getDerived().getSema().StartOpenMPDSABlock(OMPD_parallel_for, DirName,
 8032   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8033   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8041   getDerived().getSema().StartOpenMPDSABlock(OMPD_parallel_for_simd, DirName,
 8043   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8044   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8052   getDerived().getSema().StartOpenMPDSABlock(OMPD_parallel_sections, DirName,
 8054   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8055   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8063   getDerived().getSema().StartOpenMPDSABlock(OMPD_task, DirName, nullptr,
 8065   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8066   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8074   getDerived().getSema().StartOpenMPDSABlock(OMPD_taskyield, DirName, nullptr,
 8076   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8077   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8085   getDerived().getSema().StartOpenMPDSABlock(OMPD_barrier, DirName, nullptr,
 8087   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8088   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8096   getDerived().getSema().StartOpenMPDSABlock(OMPD_taskwait, DirName, nullptr,
 8098   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8099   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8107   getDerived().getSema().StartOpenMPDSABlock(OMPD_taskgroup, DirName, nullptr,
 8109   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8110   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8118   getDerived().getSema().StartOpenMPDSABlock(OMPD_flush, DirName, nullptr,
 8120   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8121   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8129   getDerived().getSema().StartOpenMPDSABlock(OMPD_ordered, DirName, nullptr,
 8131   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8132   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8140   getDerived().getSema().StartOpenMPDSABlock(OMPD_atomic, DirName, nullptr,
 8142   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8143   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8151   getDerived().getSema().StartOpenMPDSABlock(OMPD_target, DirName, nullptr,
 8153   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8154   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8162   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_data, DirName, nullptr,
 8164   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8165   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8173   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_enter_data, DirName,
 8175   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8176   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8184   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_exit_data, DirName,
 8186   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8187   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8195   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_parallel, DirName,
 8197   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8198   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8206   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_parallel_for, DirName,
 8208   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8209   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8217   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_update, DirName,
 8219   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8220   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8228   getDerived().getSema().StartOpenMPDSABlock(OMPD_teams, DirName, nullptr,
 8230   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8231   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8239   getDerived().getSema().StartOpenMPDSABlock(OMPD_cancellation_point, DirName,
 8241   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8242   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8250   getDerived().getSema().StartOpenMPDSABlock(OMPD_cancel, DirName, nullptr,
 8252   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8253   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8261   getDerived().getSema().StartOpenMPDSABlock(OMPD_taskloop, DirName, nullptr,
 8263   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8264   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8272   getDerived().getSema().StartOpenMPDSABlock(OMPD_taskloop_simd, DirName,
 8274   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8275   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8283   getDerived().getSema().StartOpenMPDSABlock(OMPD_master_taskloop, DirName,
 8285   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8286   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8294   getDerived().getSema().StartOpenMPDSABlock(OMPD_master_taskloop_simd, DirName,
 8296   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8297   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8305   getDerived().getSema().StartOpenMPDSABlock(
 8307   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8308   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8316   getDerived().getSema().StartOpenMPDSABlock(OMPD_distribute, DirName, nullptr,
 8318   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8319   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8327   getDerived().getSema().StartOpenMPDSABlock(
 8329   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8330   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8339   getDerived().getSema().StartOpenMPDSABlock(
 8341   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8342   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8350   getDerived().getSema().StartOpenMPDSABlock(OMPD_distribute_simd, DirName,
 8352   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8353   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8361   getDerived().getSema().StartOpenMPDSABlock(
 8363   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8364   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8372   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_simd, DirName, nullptr,
 8374   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8375   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8383   getDerived().getSema().StartOpenMPDSABlock(OMPD_teams_distribute, DirName,
 8385   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8386   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8394   getDerived().getSema().StartOpenMPDSABlock(
 8396   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8397   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8405   getDerived().getSema().StartOpenMPDSABlock(
 8408   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8409   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8417   getDerived().getSema().StartOpenMPDSABlock(
 8419   StmtResult Res = getDerived().TransformOMPExecutableDirective(D);
 8420   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8428   getDerived().getSema().StartOpenMPDSABlock(OMPD_target_teams, DirName,
 8430   auto Res = getDerived().TransformOMPExecutableDirective(D);
 8431   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8439   getDerived().getSema().StartOpenMPDSABlock(
 8441   auto Res = getDerived().TransformOMPExecutableDirective(D);
 8442   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8451   getDerived().getSema().StartOpenMPDSABlock(
 8454   auto Res = getDerived().TransformOMPExecutableDirective(D);
 8455   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8464   getDerived().getSema().StartOpenMPDSABlock(
 8467   auto Res = getDerived().TransformOMPExecutableDirective(D);
 8468   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8477   getDerived().getSema().StartOpenMPDSABlock(
 8479   auto Res = getDerived().TransformOMPExecutableDirective(D);
 8480   getDerived().getSema().EndOpenMPDSABlock(Res.get());
 8490   ExprResult Cond = getDerived().TransformExpr(C->getCondition());
 8493   return getDerived().RebuildOMPIfClause(
 8500   ExprResult Cond = getDerived().TransformExpr(C->getCondition());
 8503   return getDerived().RebuildOMPFinalClause(Cond.get(), C->getBeginLoc(),
 8510   ExprResult NumThreads = getDerived().TransformExpr(C->getNumThreads());
 8513   return getDerived().RebuildOMPNumThreadsClause(
 8520   ExprResult E = getDerived().TransformExpr(C->getSafelen());
 8523   return getDerived().RebuildOMPSafelenClause(
 8530   ExprResult E = getDerived().TransformExpr(C->getAllocator());
 8533   return getDerived().RebuildOMPAllocatorClause(
 8540   ExprResult E = getDerived().TransformExpr(C->getSimdlen());
 8543   return getDerived().RebuildOMPSimdlenClause(
 8550   ExprResult E = getDerived().TransformExpr(C->getNumForLoops());
 8553   return getDerived().RebuildOMPCollapseClause(
 8560   return getDerived().RebuildOMPDefaultClause(
 8568   return getDerived().RebuildOMPProcBindClause(
 8576   ExprResult E = getDerived().TransformExpr(C->getChunkSize());
 8579   return getDerived().RebuildOMPScheduleClause(
 8591     E = getDerived().TransformExpr(Num);
 8595   return getDerived().RebuildOMPOrderedClause(C->getBeginLoc(), C->getEndLoc(),
 8712     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8717   return getDerived().RebuildOMPPrivateClause(
 8727     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8732   return getDerived().RebuildOMPFirstprivateClause(
 8742     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8747   return getDerived().RebuildOMPLastprivateClause(
 8757     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8762   return getDerived().RebuildOMPSharedClause(Vars, C->getBeginLoc(),
 8772     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8782     NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
 8796             cast<NamedDecl>(getDerived().TransformDecl(E->getExprLoc(), D));
 8808   return getDerived().RebuildOMPReductionClause(
 8819     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8829     NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
 8843             cast<NamedDecl>(getDerived().TransformDecl(E->getExprLoc(), D));
 8853   return getDerived().RebuildOMPTaskReductionClause(
 8864     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8874     NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
 8888             cast<NamedDecl>(getDerived().TransformDecl(E->getExprLoc(), D));
 8898   return getDerived().RebuildOMPInReductionClause(
 8909     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8914   ExprResult Step = getDerived().TransformExpr(C->getStep());
 8917   return getDerived().RebuildOMPLinearClause(
 8928     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8933   ExprResult Alignment = getDerived().TransformExpr(C->getAlignment());
 8936   return getDerived().RebuildOMPAlignedClause(
 8947     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8952   return getDerived().RebuildOMPCopyinClause(Vars, C->getBeginLoc(),
 8962     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8967   return getDerived().RebuildOMPCopyprivateClause(
 8976     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8981   return getDerived().RebuildOMPFlushClause(Vars, C->getBeginLoc(),
 8991     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 8996   return getDerived().RebuildOMPDependClause(
 9004   ExprResult E = getDerived().TransformExpr(C->getDevice());
 9007   return getDerived().RebuildOMPDeviceClause(E.get(), C->getBeginLoc(),
 9020     ExprResult EVar = TT.getDerived().TransformExpr(cast<Expr>(VE));
 9028     QualifierLoc = TT.getDerived().TransformNestedNameSpecifierLoc(
 9036     MapperIdInfo = TT.getDerived().TransformDeclarationNameInfo(MapperIdInfo);
 9049             cast<NamedDecl>(TT.getDerived().TransformDecl(E->getExprLoc(), D));
 9074   return getDerived().RebuildOMPMapClause(
 9085     ExprResult AllocatorRes = getDerived().TransformExpr(Allocator);
 9093     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9098   return getDerived().RebuildOMPAllocateClause(
 9106   ExprResult E = getDerived().TransformExpr(C->getNumTeams());
 9109   return getDerived().RebuildOMPNumTeamsClause(
 9116   ExprResult E = getDerived().TransformExpr(C->getThreadLimit());
 9119   return getDerived().RebuildOMPThreadLimitClause(
 9126   ExprResult E = getDerived().TransformExpr(C->getPriority());
 9129   return getDerived().RebuildOMPPriorityClause(
 9136   ExprResult E = getDerived().TransformExpr(C->getGrainsize());
 9139   return getDerived().RebuildOMPGrainsizeClause(
 9146   ExprResult E = getDerived().TransformExpr(C->getNumTasks());
 9149   return getDerived().RebuildOMPNumTasksClause(
 9155   ExprResult E = getDerived().TransformExpr(C->getHint());
 9158   return getDerived().RebuildOMPHintClause(E.get(), C->getBeginLoc(),
 9165   ExprResult E = getDerived().TransformExpr(C->getChunkSize());
 9168   return getDerived().RebuildOMPDistScheduleClause(
 9189   return getDerived().RebuildOMPToClause(Vars, MapperIdScopeSpec, MapperIdInfo,
 9203   return getDerived().RebuildOMPFromClause(
 9213     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9219   return getDerived().RebuildOMPUseDevicePtrClause(Vars, Locs);
 9228     ExprResult EVar = getDerived().TransformExpr(cast<Expr>(VE));
 9234   return getDerived().RebuildOMPIsDevicePtrClause(Vars, Locs);
 9252   return getDerived().RebuildPredefinedExpr(E->getLocation(),
 9262       = getDerived().TransformNestedNameSpecifierLoc(E->getQualifierLoc());
 9268     = cast_or_null<ValueDecl>(getDerived().TransformDecl(E->getLocation(),
 9276         getDerived().TransformDecl(E->getLocation(), E->getFoundDecl()));
 9283     NameInfo = getDerived().TransformDeclarationNameInfo(NameInfo);
 9288   if (!getDerived().AlwaysRebuild() &&
 9307     if (getDerived().TransformTemplateArguments(E->getTemplateArgs(),
 9313   return getDerived().RebuildDeclRefExpr(QualifierLoc, ND, NameInfo,
 9365     getDerived().TransformExpr(E->getControllingExpr());
 9374       TypeSourceInfo *AssocType = getDerived().TransformType(TSI);
 9383         getDerived().TransformExpr(Assoc.getAssociationExpr());
 9389   return getDerived().RebuildGenericSelectionExpr(E->getGenericLoc(),
 9400   ExprResult SubExpr = getDerived().TransformExpr(E->getSubExpr());
 9404   if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getSubExpr())
 9407   return getDerived().RebuildParenExpr(SubExpr.get(), E->getLParen(),
 9418     return getDerived().TransformDependentScopeDeclRefExpr(DRE, true, nullptr);
 9420     return getDerived().TransformExpr(E);
 9434   if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getSubExpr())
 9437   return getDerived().RebuildUnaryOperator(E->getOperatorLoc(),
 9446   TypeSourceInfo *Type = getDerived().TransformType(E->getTypeSourceInfo());
 9468       ExprResult Index = getDerived().TransformExpr(FromIndex);
 9496   if (!getDerived().AlwaysRebuild() &&
 9502   return getDerived().RebuildOffsetOfExpr(E->getOperatorLoc(), Type,
 9509   assert((!E->getSourceExpr() || getDerived().AlreadyTransformed(E->getType())) &&
 9530   ExprResult result = getDerived().TransformExpr(newSyntacticForm);
 9549     TypeSourceInfo *NewT = getDerived().TransformType(OldT);
 9553     if (!getDerived().AlwaysRebuild() && OldT == NewT)
 9556     return getDerived().RebuildUnaryExprOrTypeTrait(NewT, E->getOperatorLoc(),
 9575     SubExpr = getDerived().TransformParenDependentScopeDeclRefExpr(
 9578     SubExpr = getDerived().TransformExpr(E->getArgumentExpr());
 9581     return getDerived().RebuildUnaryExprOrTypeTrait(
 9586   if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getArgumentExpr())
 9589   return getDerived().RebuildUnaryExprOrTypeTrait(SubExpr.get(),
 9598   ExprResult LHS = getDerived().TransformExpr(E->getLHS());
 9602   ExprResult RHS = getDerived().TransformExpr(E->getRHS());
 9607   if (!getDerived().AlwaysRebuild() &&
 9612   return getDerived().RebuildArraySubscriptExpr(
 9620   ExprResult Base = getDerived().TransformExpr(E->getBase());
 9626     LowerBound = getDerived().TransformExpr(E->getLowerBound());
 9633     Length = getDerived().TransformExpr(E->getLength());
 9638   if (!getDerived().AlwaysRebuild() && Base.get() == E->getBase() &&
 9642   return getDerived().RebuildOMPArraySectionExpr(
 9651   ExprResult Callee = getDerived().TransformExpr(E->getCallee());
 9658   if (getDerived().TransformExprs(E->getArgs(), E->getNumArgs(), true, Args,
 9662   if (!getDerived().AlwaysRebuild() &&
 9670   return getDerived().RebuildCallExpr(Callee.get(), FakeLParenLoc,
 9678   ExprResult Base = getDerived().TransformExpr(E->getBase());
 9685       = getDerived().TransformNestedNameSpecifierLoc(E->getQualifierLoc());
 9693     = cast_or_null<ValueDecl>(getDerived().TransformDecl(E->getMemberLoc(),
 9703                    getDerived().TransformDecl(E->getMemberLoc(), FoundDecl));
 9708   if (!getDerived().AlwaysRebuild() &&
 9726     if (getDerived().TransformTemplateArguments(E->getTemplateArgs(),
 9743     MemberNameInfo = getDerived().TransformDeclarationNameInfo(MemberNameInfo);
 9748   return getDerived().RebuildMemberExpr(Base.get(), FakeOperatorLoc,
 9763   ExprResult LHS = getDerived().TransformExpr(E->getLHS());
 9767   ExprResult RHS = getDerived().TransformExpr(E->getRHS());
 9771   if (!getDerived().AlwaysRebuild() &&
 9779   return getDerived().RebuildBinaryOperator(E->getOperatorLoc(), E->getOpcode(),
 9788   ExprResult LHS = getDerived().TransformExpr(const_cast<Expr*>(Decomp.LHS));
 9792   ExprResult RHS = getDerived().TransformExpr(const_cast<Expr*>(Decomp.RHS));
 9796   if (!getDerived().AlwaysRebuild() &&
 9816     NamedDecl *Found = cast_or_null<NamedDecl>(getDerived().TransformDecl(
 9823   return getDerived().RebuildCXXRewrittenBinaryOperator(
 9831   return getDerived().TransformBinaryOperator(E);
 9840   ExprResult commonExpr = getDerived().TransformExpr(e->getCommon());
 9844   ExprResult rhs = getDerived().TransformExpr(e->getFalseExpr());
 9848   if (!getDerived().AlwaysRebuild() &&
 9853   return getDerived().RebuildConditionalOperator(commonExpr.get(),
 9863   ExprResult Cond = getDerived().TransformExpr(E->getCond());
 9867   ExprResult LHS = getDerived().TransformExpr(E->getLHS());
 9871   ExprResult RHS = getDerived().TransformExpr(E->getRHS());
 9875   if (!getDerived().AlwaysRebuild() &&
 9881   return getDerived().RebuildConditionalOperator(Cond.get(),
 9893   return getDerived().TransformExpr(E->getSubExprAsWritten());
 9899   TypeSourceInfo *Type = getDerived().TransformType(E->getTypeInfoAsWritten());
 9904     = getDerived().TransformExpr(E->getSubExprAsWritten());
 9908   if (!getDerived().AlwaysRebuild() &&
 9913   return getDerived().RebuildCStyleCastExpr(E->getLParenLoc(),
 9923   TypeSourceInfo *NewT = getDerived().TransformType(OldT);
 9927   ExprResult Init = getDerived().TransformExpr(E->getInitializer());
 9931   if (!getDerived().AlwaysRebuild() &&
 9940   return getDerived().RebuildCompoundLiteralExpr(
 9948   ExprResult Base = getDerived().TransformExpr(E->getBase());
 9952   if (!getDerived().AlwaysRebuild() &&
 9959   return getDerived().RebuildExtVectorElementExpr(Base.get(), FakeOperatorLoc,
 9976   if (getDerived().TransformExprs(E->getInits(), E->getNumInits(), false,
 9980   if (!getDerived().AlwaysRebuild() && !InitChanged) {
 9987   return getDerived().RebuildInitList(E->getLBraceLoc(), Inits,
 9997   ExprResult Init = getDerived().TransformExpr(E->getInit());
10011             getDerived().TransformDecl(D.getFieldLoc(), D.getField()));
10026       ExprResult Index = getDerived().TransformExpr(E->getArrayIndex(D));
10040       = getDerived().TransformExpr(E->getArrayRangeStart(D));
10044     ExprResult End = getDerived().TransformExpr(E->getArrayRangeEnd(D));
10060   if (!getDerived().AlwaysRebuild() &&
10065   return getDerived().RebuildDesignatedInitExpr(Desig, ArrayExprs,
10111   QualType T = getDerived().TransformType(E->getType());
10115   if (!getDerived().AlwaysRebuild() &&
10119   return getDerived().RebuildImplicitValueInitExpr(T);
10125   TypeSourceInfo *TInfo = getDerived().TransformType(E->getWrittenTypeInfo());
10129   ExprResult SubExpr = getDerived().TransformExpr(E->getSubExpr());
10133   if (!getDerived().AlwaysRebuild() &&
10138   return getDerived().RebuildVAArgExpr(E->getBuiltinLoc(), SubExpr.get(),
10151   return getDerived().RebuildParenListExpr(E->getLParenLoc(),
10164   Decl *LD = getDerived().TransformDecl(E->getLabel()->getLocation(),
10169   return getDerived().RebuildAddrLabelExpr(E->getAmpAmpLoc(), E->getLabelLoc(),
10178     = getDerived().TransformCompoundStmt(E->getSubStmt(), true);
10184   if (!getDerived().AlwaysRebuild() &&
10191   return getDerived().RebuildStmtExpr(E->getLParenLoc(),
10199   ExprResult Cond = getDerived().TransformExpr(E->getCond());
10203   ExprResult LHS = getDerived().TransformExpr(E->getLHS());
10207   ExprResult RHS = getDerived().TransformExpr(E->getRHS());
10211   if (!getDerived().AlwaysRebuild() &&
10217   return getDerived().RebuildChooseExpr(E->getBuiltinLoc(),
10243     ExprResult Object = getDerived().TransformExpr(E->getArg(0));
10253     if (getDerived().TransformExprs(E->getArgs() + 1, E->getNumArgs() - 1, true,
10257     return getDerived().RebuildCallExpr(Object.get(), FakeLParenLoc, Args,
10277   ExprResult Callee = getDerived().TransformExpr(E->getCallee());
10283     First = getDerived().TransformAddressOfOperand(E->getArg(0));
10285     First = getDerived().TransformExpr(E->getArg(0));
10291     Second = getDerived().TransformExpr(E->getArg(1));
10296   if (!getDerived().AlwaysRebuild() &&
10305   return getDerived().RebuildCXXOperatorCallExpr(E->getOperator(),
10315   return getDerived().TransformCallExpr(E);
10323   if (!getDerived().AlwaysRebuild() && !NeedRebuildFunc)
10326   return getDerived().RebuildSourceLocExpr(E->getIdentKind(), E->getBeginLoc(),
10335   ExprResult Callee = getDerived().TransformExpr(E->getCallee());
10340   ExprResult EC = getDerived().TransformCallExpr(E->getConfig());
10347   if (getDerived().TransformExprs(E->getArgs(), E->getNumArgs(), true, Args,
10351   if (!getDerived().AlwaysRebuild() &&
10359   return getDerived().RebuildCallExpr(Callee.get(), FakeLParenLoc,
10367   TypeSourceInfo *Type = getDerived().TransformType(E->getTypeInfoAsWritten());
10372     = getDerived().TransformExpr(E->getSubExprAsWritten());
10376   if (!getDerived().AlwaysRebuild() &&
10380   return getDerived().RebuildCXXNamedCastExpr(
10391       getDerived().TransformType(BCE->getTypeInfoAsWritten());
10395   ExprResult Sub = getDerived().TransformExpr(BCE->getSubExpr());
10399   return getDerived().RebuildBuiltinBitCastExpr(BCE->getBeginLoc(), TSI,
10406   return getDerived().TransformCXXNamedCastExpr(E);
10412   return getDerived().TransformCXXNamedCastExpr(E);
10419   return getDerived().TransformCXXNamedCastExpr(E);
10425   return getDerived().TransformCXXNamedCastExpr(E);
10433       getDerived().TransformTypeWithDeducedTST(E->getTypeInfoAsWritten());
10438     = getDerived().TransformExpr(E->getSubExprAsWritten());
10442   if (!getDerived().AlwaysRebuild() &&
10447   return getDerived().RebuildCXXFunctionalCastExpr(Type,
10459       = getDerived().TransformType(E->getTypeOperandSourceInfo());
10463     if (!getDerived().AlwaysRebuild() &&
10467     return getDerived().RebuildCXXTypeidExpr(E->getType(), E->getBeginLoc(),
10479   ExprResult SubExpr = getDerived().TransformExpr(E->getExprOperand());
10483   if (!getDerived().AlwaysRebuild() &&
10487   return getDerived().RebuildCXXTypeidExpr(E->getType(), E->getBeginLoc(),
10496       = getDerived().TransformType(E->getTypeOperandSourceInfo());
10500     if (!getDerived().AlwaysRebuild() &&
10504     return getDerived().RebuildCXXUuidofExpr(E->getType(), E->getBeginLoc(),
10511   ExprResult SubExpr = getDerived().TransformExpr(E->getExprOperand());
10515   if (!getDerived().AlwaysRebuild() &&
10519   return getDerived().RebuildCXXUuidofExpr(E->getType(), E->getBeginLoc(),
10541   if (!getDerived().AlwaysRebuild() && T == E->getType()) {
10548   return getDerived().RebuildCXXThisExpr(E->getBeginLoc(), T, E->isImplicit());
10554   ExprResult SubExpr = getDerived().TransformExpr(E->getSubExpr());
10558   if (!getDerived().AlwaysRebuild() &&
10562   return getDerived().RebuildCXXThrowExpr(E->getThrowLoc(), SubExpr.get(),
10570       getDerived().TransformDecl(E->getBeginLoc(), E->getParam()));
10574   if (!getDerived().AlwaysRebuild() && Param == E->getParam() &&
10578   return getDerived().RebuildCXXDefaultArgExpr(E->getUsedLocation(), Param);
10585       getDerived().TransformDecl(E->getBeginLoc(), E->getField()));
10589   if (!getDerived().AlwaysRebuild() && Field == E->getField() &&
10593   return getDerived().RebuildCXXDefaultInitExpr(E->getExprLoc(), Field);
10600   TypeSourceInfo *T = getDerived().TransformType(E->getTypeSourceInfo());
10604   if (!getDerived().AlwaysRebuild() &&
10608   return getDerived().RebuildCXXScalarValueInitExpr(T,
10618       getDerived().TransformTypeWithDeducedTST(E->getAllocatedTypeSourceInfo());
10627       NewArraySize = getDerived().TransformExpr(*OldArraySize);
10637   if (getDerived().TransformExprs(E->getPlacementArgs(),
10646     NewInit = getDerived().TransformInitializer(OldInit, true);
10654         getDerived().TransformDecl(E->getBeginLoc(), E->getOperatorNew()));
10662         getDerived().TransformDecl(E->getBeginLoc(), E->getOperatorDelete()));
10667   if (!getDerived().AlwaysRebuild() &&
10720   return getDerived().RebuildCXXNewExpr(
10730   ExprResult Operand = getDerived().TransformExpr(E->getArgument());
10738         getDerived().TransformDecl(E->getBeginLoc(), E->getOperatorDelete()));
10743   if (!getDerived().AlwaysRebuild() &&
10764   return getDerived().RebuildCXXDeleteExpr(
10772   ExprResult Base = getDerived().TransformExpr(E->getBase());
10790       = getDerived().TransformNestedNameSpecifierLoc(QualifierLoc, ObjectType);
10800       = getDerived().TransformTypeInObjectScope(E->getDestroyedTypeInfo(),
10829     ScopeTypeInfo = getDerived().TransformTypeInObjectScope(
10835   return getDerived().RebuildCXXPseudoDestructorExpr(Base.get(),
10852     Decl *InstD = getDerived().TransformDecl(Old->getNameLoc(), OldD);
10916       = getDerived().TransformNestedNameSpecifierLoc(Old->getQualifierLoc());
10925       = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
10951     return getDerived().RebuildDeclarationNameExpr(SS, R, Old->requiresADL());
10958       getDerived().TransformTemplateArguments(Old->getTemplateArgs(),
10965   return getDerived().RebuildTemplateIdExpr(SS, TemplateKWLoc, R,
10980       QualType To = getDerived().TransformType(TLB, FromTL);
11008     if (getDerived().TryExpandParameterPacks(ExpansionTL.getEllipsisLoc(),
11024       QualType To = getDerived().TransformType(TLB, PatternTL);
11028       To = getDerived().RebuildPackExpansionType(To,
11048       QualType To = getDerived().TransformType(TLB, PatternTL);
11053         To = getDerived().RebuildPackExpansionType(To,
11073     ForgetPartiallySubstitutedPackRAII Forget(getDerived());
11078     QualType To = getDerived().TransformType(TLB, PatternTL);
11082     To = getDerived().RebuildPackExpansionType(To,
11095   if (!getDerived().AlwaysRebuild() && !ArgChanged)
11098   return getDerived().RebuildTypeTrait(E->getTrait(), E->getBeginLoc(), Args,
11108   if (getDerived().TransformTemplateArguments(Old->getTemplateArgs(),
11112   return getDerived().RebuildConceptSpecializationExpr(
11122   TypeSourceInfo *T = getDerived().TransformType(E->getQueriedTypeSourceInfo());
11126   if (!getDerived().AlwaysRebuild() &&
11134     SubExpr = getDerived().TransformExpr(E->getDimensionExpression());
11138     if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getDimensionExpression())
11142   return getDerived().RebuildArrayTypeTrait(E->getTrait(), E->getBeginLoc(), T,
11153     SubExpr = getDerived().TransformExpr(E->getQueriedExpression());
11157     if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getQueriedExpression())
11161   return getDerived().RebuildExpressionTrait(E->getTrait(), E->getBeginLoc(),
11169   ExprResult NewDRE = getDerived().TransformDependentScopeDeclRefExpr(
11177   if (!getDerived().AlwaysRebuild() && NewDRE.get() == DRE)
11179   return getDerived().RebuildParenExpr(NewDRE.get(), PE->getLParen(),
11198   = getDerived().TransformNestedNameSpecifierLoc(E->getQualifierLoc());
11208     = getDerived().TransformDeclarationNameInfo(E->getNameInfo());
11213     if (!getDerived().AlwaysRebuild() &&
11220     return getDerived().RebuildDependentScopeDeclRefExpr(
11226   if (getDerived().TransformTemplateArguments(E->getTemplateArgs(),
11231   return getDerived().RebuildDependentScopeDeclRefExpr(
11243        (E->getNumArgs() > 1 && getDerived().DropCallArgument(E->getArg(1)))) &&
11244       (!getDerived().DropCallArgument(E->getArg(0))) &&
11246     return getDerived().TransformExpr(E->getArg(0));
11250   QualType T = getDerived().TransformType(E->getType());
11255       getDerived().TransformDecl(E->getBeginLoc(), E->getConstructor()));
11265     if (getDerived().TransformExprs(E->getArgs(), E->getNumArgs(), true, Args,
11270   if (!getDerived().AlwaysRebuild() &&
11280   return getDerived().RebuildCXXConstructExpr(
11290   QualType T = getDerived().TransformType(E->getType());
11295       getDerived().TransformDecl(E->getBeginLoc(), E->getConstructor()));
11299   if (!getDerived().AlwaysRebuild() &&
11308   return getDerived().RebuildCXXInheritedCtorInitExpr(
11320   return getDerived().TransformExpr(E->getSubExpr());
11331   return getDerived().TransformExpr(E->getSubExpr());
11339       getDerived().TransformTypeWithDeducedTST(E->getTypeSourceInfo());
11344       getDerived().TransformDecl(E->getBeginLoc(), E->getConstructor()));
11360   if (!getDerived().AlwaysRebuild() &&
11372   return getDerived().RebuildCXXTemporaryObjectExpr(
11402       ExprResult NewExprInitResult = getDerived().TransformInitializer(
11436       if (getDerived().TryExpandParameterPacks(
11448         ForgetPartiallySubstitutedPackRAII Forget(getDerived());
11462   auto TPL = getDerived().TransformTemplateParameterList(
11498   getDerived().transformedLocalDecl(OldClass, {Class});
11501   if (getDerived().ReplacingOriginal())
11522       ExprResult R = getDerived().TransformExpr(
11528   getDerived().transformAttrs(E->getCallOperator(), NewCallOperator);
11529   getDerived().transformedLocalDecl(E->getCallOperator(), {NewCallOperator});
11598       getDerived().transformedLocalDecl(OldVD, NewVDs);
11616       if (getDerived().TryExpandParameterPacks(C->getEllipsisLoc(),
11633             = cast_or_null<VarDecl>(getDerived().TransformDecl(C->getLocation(),
11654       = cast_or_null<VarDecl>(getDerived().TransformDecl(C->getLocation(),
11674       Invalid ? StmtError() : getDerived().TransformLambdaBody(E, E->getBody());
11733         getDerived().TransformDecl(C->getLocation(), C->getCapturedVar()));
11749       getDerived().TransformTypeWithDeducedTST(E->getTypeSourceInfo());
11760     if (getDerived().TransformExprs(E->arg_begin(), E->arg_size(), true, Args,
11765   if (!getDerived().AlwaysRebuild() &&
11771   return getDerived().RebuildCXXUnresolvedConstructExpr(
11786     Base = getDerived().TransformExpr(OldBase);
11805     BaseType = getDerived().TransformType(E->getBaseType());
11812     = getDerived().TransformFirstQualifierInScope(
11819       = getDerived().TransformNestedNameSpecifierLoc(E->getQualifierLoc(),
11833     = getDerived().TransformDeclarationNameInfo(E->getMemberNameInfo());
11840     if (!getDerived().AlwaysRebuild() &&
11848     return getDerived().RebuildCXXDependentScopeMemberExpr(Base.get(),
11860   if (getDerived().TransformTemplateArguments(E->getTemplateArgs(),
11865   return getDerived().RebuildCXXDependentScopeMemberExpr(Base.get(),
11883     Base = getDerived().TransformExpr(Old->getBase());
11892     BaseType = getDerived().TransformType(Old->getBaseType());
11898     = getDerived().TransformNestedNameSpecifierLoc(Old->getQualifierLoc());
11915       = cast_or_null<CXXRecordDecl>(getDerived().TransformDecl(
11928     if (getDerived().TransformTemplateArguments(Old->getTemplateArgs(),
11940   return getDerived().RebuildUnresolvedMemberExpr(Base.get(),
11957   ExprResult SubExpr = getDerived().TransformExpr(E->getOperand());
11961   if (!getDerived().AlwaysRebuild() && SubExpr.get() == E->getOperand())
11964   return getDerived().RebuildCXXNoexceptExpr(E->getSourceRange(),SubExpr.get());
11970   ExprResult Pattern = getDerived().TransformExpr(E->getPattern());
11974   if (!getDerived().AlwaysRebuild() && Pattern.get() == E->getPattern())
11977   return getDerived().RebuildPackExpansion(Pattern.get(), E->getEllipsisLoc(),
12003     if (getDerived().TryExpandParameterPacks(E->getOperatorLoc(), E->getPackLoc(),
12036         getDerived().TransformDecl(E->getPackLoc(), E->getPack()));
12039     return getDerived().RebuildSizeOfPackExpr(E->getOperatorLoc(), Pack,
12065     if (getDerived().TransformTemplateArgument(Pattern, OutPattern,
12085     return getDerived().RebuildSizeOfPackExpr(E->getOperatorLoc(), E->getPack(),
12112     return getDerived().RebuildSizeOfPackExpr(E->getOperatorLoc(), E->getPack(),
12116   return getDerived().RebuildSizeOfPackExpr(E->getOperatorLoc(), E->getPack(),
12148   return getDerived().TransformExpr(E->GetTemporaryExpr());
12166   if (getDerived().TryExpandParameterPacks(E->getEllipsisLoc(),
12179         E->getLHS() ? getDerived().TransformExpr(E->getLHS()) : ExprResult();
12184         E->getRHS() ? getDerived().TransformExpr(E->getRHS()) : ExprResult();
12188     if (!getDerived().AlwaysRebuild() &&
12192     return getDerived().RebuildCXXFoldExpr(
12199   ExprResult Result = getDerived().TransformExpr(E->getInit());
12207     ForgetPartiallySubstitutedPackRAII Forget(getDerived());
12209     ExprResult Out = getDerived().TransformExpr(Pattern);
12213     Result = getDerived().RebuildCXXFoldExpr(
12223     ExprResult Out = getDerived().TransformExpr(Pattern);
12229       Result = getDerived().RebuildCXXFoldExpr(
12236       Result = getDerived().RebuildBinaryOperator(
12250     ForgetPartiallySubstitutedPackRAII Forget(getDerived());
12252     ExprResult Out = getDerived().TransformExpr(Pattern);
12256     Result = getDerived().RebuildCXXFoldExpr(
12266     return getDerived().RebuildEmptyCXXFoldExpr(E->getEllipsisLoc(),
12276   return getDerived().TransformExpr(E->getSubExpr());
12294   ExprResult SubExpr = getDerived().TransformExpr(E->getSubExpr());
12298   if (!getDerived().AlwaysRebuild() &&
12302   return getDerived().RebuildObjCBoxedExpr(E->getSourceRange(), SubExpr.get());
12311   if (getDerived().TransformExprs(E->getElements(), E->getNumElements(),
12315   if (!getDerived().AlwaysRebuild() && !ArgChanged)
12318   return getDerived().RebuildObjCArrayLiteral(E->getSourceRange(),
12348       if (getDerived().TryExpandParameterPacks(OrigElement.EllipsisLoc,
12358         ExprResult Key = getDerived().TransformExpr(OrigElement.Key);
12365         ExprResult Value = getDerived().TransformExpr(OrigElement.Value);
12387         ExprResult Key = getDerived().TransformExpr(OrigElement.Key);
12391         ExprResult Value = getDerived().TransformExpr(OrigElement.Value);
12416     ExprResult Key = getDerived().TransformExpr(OrigElement.Key);
12425       = getDerived().TransformExpr(OrigElement.Value);
12438   if (!getDerived().AlwaysRebuild() && !ArgChanged)
12441   return getDerived().RebuildObjCDictionaryLiteral(E->getSourceRange(),
12449     = getDerived().TransformType(E->getEncodedTypeSourceInfo());
12453   if (!getDerived().AlwaysRebuild() &&
12457   return getDerived().RebuildObjCEncodeExpr(E->getAtLoc(),
12469   return getDerived().TransformExpr(E->getSubExpr());
12476     = getDerived().TransformType(E->getTypeInfoAsWritten());
12480   ExprResult Result = getDerived().TransformExpr(E->getSubExpr());
12484   if (!getDerived().AlwaysRebuild() &&
12507   if (getDerived().TransformExprs(E->getArgs(), E->getNumArgs(), false, Args,
12514       = getDerived().TransformType(E->getClassReceiverTypeInfo());
12519     if (!getDerived().AlwaysRebuild() &&
12526     return getDerived().RebuildObjCMessageExpr(ReceiverTypeInfo,
12542     return getDerived().RebuildObjCMessageExpr(E->getSuperLoc(),
12556     = getDerived().TransformExpr(E->getInstanceReceiver());
12561   if (!getDerived().AlwaysRebuild() &&
12568   return getDerived().RebuildObjCMessageExpr(Receiver.get(),
12593   ExprResult Base = getDerived().TransformExpr(E->getBase());
12600   if (!getDerived().AlwaysRebuild() &&
12604   return getDerived().RebuildObjCIvarRefExpr(Base.get(), E->getDecl(),
12618   ExprResult Base = getDerived().TransformExpr(E->getBase());
12625   if (!getDerived().AlwaysRebuild() &&
12630     return getDerived().RebuildObjCPropertyRefExpr(Base.get(),
12634   return getDerived().RebuildObjCPropertyRefExpr(Base.get(),
12645   ExprResult Base = getDerived().TransformExpr(E->getBaseExpr());
12650   ExprResult Key = getDerived().TransformExpr(E->getKeyExpr());
12655   if (!getDerived().AlwaysRebuild() &&
12659   return getDerived().RebuildObjCSubscriptRefExpr(E->getRBracket(),
12669   ExprResult Base = getDerived().TransformExpr(E->getBase());
12674   if (!getDerived().AlwaysRebuild() &&
12678   return getDerived().RebuildObjCIsaExpr(Base.get(), E->getIsaMemberLoc(),
12689   if (getDerived().TransformExprs(E->getSubExprs(), E->getNumSubExprs(), false,
12693   if (!getDerived().AlwaysRebuild() &&
12697   return getDerived().RebuildShuffleVectorExpr(E->getBuiltinLoc(),
12705   ExprResult SrcExpr = getDerived().TransformExpr(E->getSrcExpr());
12709   TypeSourceInfo *Type = getDerived().TransformType(E->getTypeSourceInfo());
12713   if (!getDerived().AlwaysRebuild() &&
12718   return getDerived().RebuildConvertVectorExpr(E->getBuiltinLoc(),
12742   if (getDerived().TransformFunctionTypeParams(
12751       getDerived().TransformType(exprFunctionType->getReturnType());
12757     getDerived().RebuildFunctionProtoType(exprResultType, paramTypes, epi);
12770   StmtResult body = getDerived().TransformStmt(E->getBody());
12788         cast<VarDecl>(getDerived().TransformDecl(E->getCaretLocation(),
12812   if (getDerived().TransformExprs(E->getSubExprs(), E->getNumSubExprs(), false,
12816   if (!getDerived().AlwaysRebuild() &&
12820   return getDerived().RebuildAtomicExpr(E->getBuiltinLoc(), SubExprs,
12832                                   getDerived().getBaseEntity());
12839                                        getDerived().getBaseEntity());
12848                                     Sigil, getDerived().getBaseEntity());
12857                                         getDerived().getBaseEntity());
12909                                   getDerived().getBaseEntity());
12931                                 getDerived().getBaseEntity());
12942   return getDerived().RebuildArrayType(ElementType, SizeMod, &Size, SizeExpr,
12952   return getDerived().RebuildArrayType(ElementType, SizeMod, nullptr, nullptr,
12963   return getDerived().RebuildArrayType(ElementType, SizeMod, nullptr,
12975   return getDerived().RebuildArrayType(ElementType, SizeMod, nullptr,
13029                                    getDerived().getBaseLocation(),
13030                                    getDerived().getBaseEntity(),
13376                   getDerived().TransformType(CD->getParam(I)->getType())));
13386     Body = getDerived().TransformStmt(S->getCapturedStmt());