llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Rahul Joshi (jurahul) <details> <summary>Changes</summary> Adopt non-templated and array-ref returning forms of `getTrailingObjects` in ExprCXX.cpp/.h. --- Full diff: https://github.com/llvm/llvm-project/pull/143125.diff 2 Files Affected: - (modified) clang/include/clang/AST/ExprCXX.h (+22-32) - (modified) clang/lib/AST/ExprCXX.cpp (+4-6) ``````````diff diff --git a/clang/include/clang/AST/ExprCXX.h b/clang/include/clang/AST/ExprCXX.h index 4c9636f990db0..477373f07f25d 100644 --- a/clang/include/clang/AST/ExprCXX.h +++ b/clang/include/clang/AST/ExprCXX.h @@ -1290,7 +1290,7 @@ class CXXDefaultArgExpr final CXXDefaultArgExprBits.Loc = Loc; CXXDefaultArgExprBits.HasRewrittenInit = RewrittenExpr != nullptr; if (RewrittenExpr) - *getTrailingObjects<Expr *>() = RewrittenExpr; + *getTrailingObjects() = RewrittenExpr; setDependence(computeDependence(this)); } @@ -1323,7 +1323,7 @@ class CXXDefaultArgExpr final } Expr *getRewrittenExpr() { - return hasRewrittenInit() ? *getTrailingObjects<Expr *>() : nullptr; + return hasRewrittenInit() ? *getTrailingObjects() : nullptr; } const Expr *getRewrittenExpr() const { @@ -1421,14 +1421,14 @@ class CXXDefaultInitExpr final /// any. const Expr *getRewrittenExpr() const { assert(hasRewrittenInit() && "expected a rewritten init expression"); - return *getTrailingObjects<Expr *>(); + return *getTrailingObjects(); } /// Retrieve the initializing expression with evaluated immediate calls, if /// any. Expr *getRewrittenExpr() { assert(hasRewrittenInit() && "expected a rewritten init expression"); - return *getTrailingObjects<Expr *>(); + return *getTrailingObjects(); } const DeclContext *getUsedContext() const { return UsedContext; } @@ -1982,8 +1982,8 @@ class LambdaExpr final : public Expr, /// Construct an empty lambda expression. LambdaExpr(EmptyShell Empty, unsigned NumCaptures); - Stmt **getStoredStmts() { return getTrailingObjects<Stmt *>(); } - Stmt *const *getStoredStmts() const { return getTrailingObjects<Stmt *>(); } + Stmt **getStoredStmts() { return getTrailingObjects(); } + Stmt *const *getStoredStmts() const { return getTrailingObjects(); } void initBodyIfNeeded() const; @@ -3621,7 +3621,7 @@ class ExprWithCleanups final ArrayRef<CleanupObject> objects); ArrayRef<CleanupObject> getObjects() const { - return getTrailingObjects<CleanupObject>(getNumObjects()); + return getTrailingObjects(getNumObjects()); } unsigned getNumObjects() const { return ExprWithCleanupsBits.NumObjects; } @@ -3742,14 +3742,14 @@ class CXXUnresolvedConstructExpr final using arg_iterator = Expr **; using arg_range = llvm::iterator_range<arg_iterator>; - arg_iterator arg_begin() { return getTrailingObjects<Expr *>(); } + arg_iterator arg_begin() { return getTrailingObjects(); } arg_iterator arg_end() { return arg_begin() + getNumArgs(); } arg_range arguments() { return arg_range(arg_begin(), arg_end()); } using const_arg_iterator = const Expr* const *; using const_arg_range = llvm::iterator_range<const_arg_iterator>; - const_arg_iterator arg_begin() const { return getTrailingObjects<Expr *>(); } + const_arg_iterator arg_begin() const { return getTrailingObjects(); } const_arg_iterator arg_end() const { return arg_begin() + getNumArgs(); } const_arg_range arguments() const { return const_arg_range(arg_begin(), arg_end()); @@ -3860,10 +3860,6 @@ class CXXDependentScopeMemberExpr final return getNumTemplateArgs(); } - unsigned numTrailingObjects(OverloadToken<NamedDecl *>) const { - return hasFirstQualifierFoundInScope(); - } - CXXDependentScopeMemberExpr(const ASTContext &Ctx, Expr *Base, QualType BaseType, bool IsArrow, SourceLocation OperatorLoc, @@ -4419,7 +4415,7 @@ class SizeOfPackExpr final Length(Length ? *Length : PartialArgs.size()), Pack(Pack) { assert((!Length || PartialArgs.empty()) && "have partial args for non-dependent sizeof... expression"); - auto *Args = getTrailingObjects<TemplateArgument>(); + auto *Args = getTrailingObjects(); llvm::uninitialized_copy(PartialArgs, Args); setDependence(Length ? ExprDependence::None : ExprDependence::ValueInstantiation); @@ -4472,8 +4468,7 @@ class SizeOfPackExpr final /// Get ArrayRef<TemplateArgument> getPartialArguments() const { assert(isPartiallySubstituted()); - const auto *Args = getTrailingObjects<TemplateArgument>(); - return llvm::ArrayRef(Args, Args + Length); + return getTrailingObjects(Length); } SourceLocation getBeginLoc() const LLVM_READONLY { return OperatorLoc; } @@ -4517,8 +4512,7 @@ class PackIndexingExpr final SubExprs{PackIdExpr, IndexExpr} { PackIndexingExprBits.TransformedExpressions = SubstitutedExprs.size(); PackIndexingExprBits.FullySubstituted = FullySubstituted; - auto *Exprs = getTrailingObjects<Expr *>(); - llvm::uninitialized_copy(SubstitutedExprs, Exprs); + llvm::uninitialized_copy(SubstitutedExprs, getTrailingObjects()); setDependence(computeDependence(this)); if (!isInstantiationDependent()) @@ -4583,13 +4577,12 @@ class PackIndexingExpr final Expr *getSelectedExpr() const { UnsignedOrNone Index = getSelectedIndex(); assert(Index && "extracting the indexed expression of a dependant pack"); - return getTrailingObjects<Expr *>()[*Index]; + return getTrailingObjects()[*Index]; } /// Return the trailing expressions, regardless of the expansion. ArrayRef<Expr *> getExpressions() const { - return {getTrailingObjects<Expr *>(), - PackIndexingExprBits.TransformedExpressions}; + return getTrailingObjects(PackIndexingExprBits.TransformedExpressions); } static bool classof(const Stmt *T) { @@ -4817,7 +4810,7 @@ class FunctionParmPackExpr final /// Iterators over the parameters which the parameter pack expanded /// into. using iterator = ValueDecl *const *; - iterator begin() const { return getTrailingObjects<ValueDecl *>(); } + iterator begin() const { return getTrailingObjects(); } iterator end() const { return begin() + NumParameters; } /// Get the number of parameters in this parameter pack. @@ -5099,7 +5092,7 @@ class CXXParenListInitExpr final : Expr(CXXParenListInitExprClass, T, getValueKindForType(T), OK_Ordinary), NumExprs(Args.size()), NumUserSpecifiedExprs(NumUserSpecifiedExprs), InitLoc(InitLoc), LParenLoc(LParenLoc), RParenLoc(RParenLoc) { - std::copy(Args.begin(), Args.end(), getTrailingObjects<Expr *>()); + llvm::copy(Args, getTrailingObjects()); assert(NumExprs >= NumUserSpecifiedExprs && "number of user specified inits is greater than the number of " "passed inits"); @@ -5124,19 +5117,17 @@ class CXXParenListInitExpr final void updateDependence() { setDependence(computeDependence(this)); } MutableArrayRef<Expr *> getInitExprs() { - return getTrailingObjects<Expr *>(NumExprs); + return getTrailingObjects(NumExprs); } - ArrayRef<Expr *> getInitExprs() const { - return getTrailingObjects<Expr *>(NumExprs); - } + ArrayRef<Expr *> getInitExprs() const { return getTrailingObjects(NumExprs); } ArrayRef<Expr *> getUserSpecifiedInitExprs() { - return getTrailingObjects<Expr *>(NumUserSpecifiedExprs); + return getTrailingObjects(NumUserSpecifiedExprs); } ArrayRef<Expr *> getUserSpecifiedInitExprs() const { - return getTrailingObjects<Expr *>(NumUserSpecifiedExprs); + return getTrailingObjects(NumUserSpecifiedExprs); } SourceLocation getBeginLoc() const LLVM_READONLY { return LParenLoc; } @@ -5172,13 +5163,12 @@ class CXXParenListInitExpr final } child_range children() { - Stmt **Begin = reinterpret_cast<Stmt **>(getTrailingObjects<Expr *>()); + Stmt **Begin = reinterpret_cast<Stmt **>(getTrailingObjects()); return child_range(Begin, Begin + NumExprs); } const_child_range children() const { - Stmt *const *Begin = - reinterpret_cast<Stmt *const *>(getTrailingObjects<Expr *>()); + Stmt *const *Begin = reinterpret_cast<Stmt *const *>(getTrailingObjects()); return const_child_range(Begin, Begin + NumExprs); } diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp index bd43ed5ab2f9a..43b1c39d73798 100644 --- a/clang/lib/AST/ExprCXX.cpp +++ b/clang/lib/AST/ExprCXX.cpp @@ -1067,7 +1067,7 @@ CXXDefaultInitExpr::CXXDefaultInitExpr(const ASTContext &Ctx, CXXDefaultInitExprBits.HasRewrittenInit = RewrittenInitExpr != nullptr; if (CXXDefaultInitExprBits.HasRewrittenInit) - *getTrailingObjects<Expr *>() = RewrittenInitExpr; + *getTrailingObjects() = RewrittenInitExpr; assert(Field->hasInClassInitializer()); @@ -1437,8 +1437,7 @@ ExprWithCleanups::ExprWithCleanups(Expr *subexpr, : FullExpr(ExprWithCleanupsClass, subexpr) { ExprWithCleanupsBits.CleanupsHaveSideEffects = CleanupsHaveSideEffects; ExprWithCleanupsBits.NumObjects = objects.size(); - for (unsigned i = 0, e = objects.size(); i != e; ++i) - getTrailingObjects<CleanupObject>()[i] = objects[i]; + llvm::copy(objects, getTrailingObjects()); } ExprWithCleanups *ExprWithCleanups::Create(const ASTContext &C, Expr *subexpr, @@ -1474,7 +1473,7 @@ CXXUnresolvedConstructExpr::CXXUnresolvedConstructExpr( TypeAndInitForm(TSI, IsListInit), LParenLoc(LParenLoc), RParenLoc(RParenLoc) { CXXUnresolvedConstructExprBits.NumArgs = Args.size(); - auto **StoredArgs = getTrailingObjects<Expr *>(); + auto **StoredArgs = getTrailingObjects(); for (unsigned I = 0; I != Args.size(); ++I) StoredArgs[I] = Args[I]; setDependence(computeDependence(this)); @@ -1800,8 +1799,7 @@ FunctionParmPackExpr::FunctionParmPackExpr(QualType T, ValueDecl *ParamPack, : Expr(FunctionParmPackExprClass, T, VK_LValue, OK_Ordinary), ParamPack(ParamPack), NameLoc(NameLoc), NumParameters(NumParams) { if (Params) - std::uninitialized_copy(Params, Params + NumParams, - getTrailingObjects<ValueDecl *>()); + std::uninitialized_copy(Params, Params + NumParams, getTrailingObjects()); setDependence(ExprDependence::TypeValueInstantiation | ExprDependence::UnexpandedPack); } `````````` </details> https://github.com/llvm/llvm-project/pull/143125 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits