[clang] [NFC][Clang] Adopt simplified `getTrailingObjects` in ExprCXX (PR #143125)
Rahul Joshi via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 6 05:22:28 PDT 2025
https://github.com/jurahul created https://github.com/llvm/llvm-project/pull/143125
None
>From a2dc54aae78b395574e071f46dcc55dfbf6825cc Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Mon, 19 May 2025 10:25:19 -0700
Subject: [PATCH] [NFC][Clang] Adopt simplified `getTrailingObjects` in ExprCXX
---
clang/include/clang/AST/ExprCXX.h | 54 +++++++++++++------------------
clang/lib/AST/ExprCXX.cpp | 10 +++---
2 files changed, 26 insertions(+), 38 deletions(-)
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);
}
More information about the cfe-commits
mailing list