-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[NFC][Clang] Adopt simplified getTrailingObjects
in ExprCXX
#143125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@llvm/pr-subscribers-clang Author: Rahul Joshi (jurahul) ChangesAdopt non-templated and array-ref returning forms of Full diff: https://github.com/llvm/llvm-project/pull/143125.diff 2 Files Affected:
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);
}
|
erichkeane
approved these changes
Jun 6, 2025
rorth
pushed a commit
to rorth/llvm-project
that referenced
this pull request
Jun 11, 2025
DhruvSrivastavaX
pushed a commit
to DhruvSrivastavaX/lldb-for-aix
that referenced
this pull request
Jun 12, 2025
tomtor
pushed a commit
to tomtor/llvm-project
that referenced
this pull request
Jun 14, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
clang:frontend
Language frontend issues, e.g. anything involving "Sema"
clang
Clang issues not falling into any other category
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adopt non-templated and array-ref returning forms of
getTrailingObjects
in ExprCXX.cpp/.h.