aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorRahul Joshi <rjoshi@nvidia.com>2025-05-19 08:20:30 -0700
committerGitHub <noreply@github.com>2025-05-19 08:20:30 -0700
commit37ece04e096b76eef5f3cf7241ea3ff0d212a8ed (patch)
treef0ab3bd7d879e8480e8f44848aa57f1b2f97c9a4 /clang/lib
parentf85d03c21518fa87239fa4e2d23267d0d5af9cf6 (diff)
downloadllvm-37ece04e096b76eef5f3cf7241ea3ff0d212a8ed.zip
llvm-37ece04e096b76eef5f3cf7241ea3ff0d212a8ed.tar.gz
llvm-37ece04e096b76eef5f3cf7241ea3ff0d212a8ed.tar.bz2
[NFC][Clang] Adopt simplified `getTrailingObjects` in Expr.cpp/h (#140102)
Adopt non-templated and array-ref returning forms of `getTrailingObjects` in Expr.cpp/.h. Use ArrayRef forms to eliminate manual asserting for OOB index. Use llvm::copy() instead of std::copy() in some instances.
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/Expr.cpp70
-rw-r--r--clang/lib/Serialization/ASTReaderStmt.cpp4
2 files changed, 34 insertions, 40 deletions
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index ba75197..fe874cc 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -4449,11 +4449,10 @@ GenericSelectionExpr::GenericSelectionExpr(
GenericSelectionExprBits.GenericLoc = GenericLoc;
getTrailingObjects<Stmt *>()[getIndexOfControllingExpression()] =
ControllingExpr;
- std::copy(AssocExprs.begin(), AssocExprs.end(),
- getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
- std::copy(AssocTypes.begin(), AssocTypes.end(),
- getTrailingObjects<TypeSourceInfo *>() +
- getIndexOfStartOfAssociatedTypes());
+ llvm::copy(AssocExprs,
+ getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
+ llvm::copy(AssocTypes, getTrailingObjects<TypeSourceInfo *>() +
+ getIndexOfStartOfAssociatedTypes());
setDependence(computeDependence(this, ContainsUnexpandedParameterPack));
}
@@ -4477,11 +4476,10 @@ GenericSelectionExpr::GenericSelectionExpr(
GenericSelectionExprBits.GenericLoc = GenericLoc;
getTrailingObjects<TypeSourceInfo *>()[getIndexOfControllingType()] =
ControllingType;
- std::copy(AssocExprs.begin(), AssocExprs.end(),
- getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
- std::copy(AssocTypes.begin(), AssocTypes.end(),
- getTrailingObjects<TypeSourceInfo *>() +
- getIndexOfStartOfAssociatedTypes());
+ llvm::copy(AssocExprs,
+ getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
+ llvm::copy(AssocTypes, getTrailingObjects<TypeSourceInfo *>() +
+ getIndexOfStartOfAssociatedTypes());
setDependence(computeDependence(this, ContainsUnexpandedParameterPack));
}
@@ -4502,11 +4500,10 @@ GenericSelectionExpr::GenericSelectionExpr(
GenericSelectionExprBits.GenericLoc = GenericLoc;
getTrailingObjects<Stmt *>()[getIndexOfControllingExpression()] =
ControllingExpr;
- std::copy(AssocExprs.begin(), AssocExprs.end(),
- getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
- std::copy(AssocTypes.begin(), AssocTypes.end(),
- getTrailingObjects<TypeSourceInfo *>() +
- getIndexOfStartOfAssociatedTypes());
+ llvm::copy(AssocExprs,
+ getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
+ llvm::copy(AssocTypes, getTrailingObjects<TypeSourceInfo *>() +
+ getIndexOfStartOfAssociatedTypes());
setDependence(computeDependence(this, ContainsUnexpandedParameterPack));
}
@@ -4527,11 +4524,10 @@ GenericSelectionExpr::GenericSelectionExpr(
GenericSelectionExprBits.GenericLoc = GenericLoc;
getTrailingObjects<TypeSourceInfo *>()[getIndexOfControllingType()] =
ControllingType;
- std::copy(AssocExprs.begin(), AssocExprs.end(),
- getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
- std::copy(AssocTypes.begin(), AssocTypes.end(),
- getTrailingObjects<TypeSourceInfo *>() +
- getIndexOfStartOfAssociatedTypes());
+ llvm::copy(AssocExprs,
+ getTrailingObjects<Stmt *>() + getIndexOfStartOfAssociatedExprs());
+ llvm::copy(AssocTypes, getTrailingObjects<TypeSourceInfo *>() +
+ getIndexOfStartOfAssociatedTypes());
setDependence(computeDependence(this, ContainsUnexpandedParameterPack));
}
@@ -4780,9 +4776,7 @@ ParenListExpr::ParenListExpr(SourceLocation LParenLoc, ArrayRef<Expr *> Exprs,
: Expr(ParenListExprClass, QualType(), VK_PRValue, OK_Ordinary),
LParenLoc(LParenLoc), RParenLoc(RParenLoc) {
ParenListExprBits.NumExprs = Exprs.size();
-
- for (unsigned I = 0, N = Exprs.size(); I != N; ++I)
- getTrailingObjects<Stmt *>()[I] = Exprs[I];
+ llvm::copy(Exprs, getTrailingObjects());
setDependence(computeDependence(this));
}
@@ -5043,17 +5037,19 @@ PseudoObjectExpr::PseudoObjectExpr(QualType type, ExprValueKind VK,
: Expr(PseudoObjectExprClass, type, VK, OK_Ordinary) {
PseudoObjectExprBits.NumSubExprs = semantics.size() + 1;
PseudoObjectExprBits.ResultIndex = resultIndex + 1;
-
- for (unsigned i = 0, e = semantics.size() + 1; i != e; ++i) {
- Expr *E = (i == 0 ? syntax : semantics[i-1]);
- getSubExprsBuffer()[i] = E;
-
- if (isa<OpaqueValueExpr>(E))
- assert(cast<OpaqueValueExpr>(E)->getSourceExpr() != nullptr &&
- "opaque-value semantic expressions for pseudo-object "
- "operations must have sources");
- }
-
+ MutableArrayRef<Expr *> Trail = getTrailingObjects(semantics.size() + 1);
+ Trail[0] = syntax;
+
+ assert(llvm::all_of(semantics,
+ [](const Expr *E) {
+ return !isa<OpaqueValueExpr>(E) ||
+ cast<OpaqueValueExpr>(E)->getSourceExpr() !=
+ nullptr;
+ }) &&
+ "opaque-value semantic expressions for pseudo-object "
+ "operations must have sources");
+
+ llvm::copy(semantics, Trail.drop_front().begin());
setDependence(computeDependence(this));
}
@@ -5240,7 +5236,7 @@ RecoveryExpr::RecoveryExpr(ASTContext &Ctx, QualType T, SourceLocation BeginLoc,
assert(!T.isNull());
assert(!llvm::is_contained(SubExprs, nullptr));
- llvm::copy(SubExprs, getTrailingObjects<Expr *>());
+ llvm::copy(SubExprs, getTrailingObjects());
setDependence(computeDependence(this));
}
@@ -5307,9 +5303,7 @@ OMPArrayShapingExpr *OMPArrayShapingExpr::CreateEmpty(const ASTContext &Context,
}
void OMPIteratorExpr::setIteratorDeclaration(unsigned I, Decl *D) {
- assert(I < NumIterators &&
- "Idx is greater or equal the number of iterators definitions.");
- getTrailingObjects<Decl *>()[I] = D;
+ getTrailingObjects<Decl *>(NumIterators)[I] = D;
}
void OMPIteratorExpr::setAssignmentLoc(unsigned I, SourceLocation Loc) {
diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp
index bf352c3..0ba0378 100644
--- a/clang/lib/Serialization/ASTReaderStmt.cpp
+++ b/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -1433,12 +1433,12 @@ void ASTStmtReader::VisitPseudoObjectExpr(PseudoObjectExpr *E) {
E->PseudoObjectExprBits.ResultIndex = Record.readInt();
// Read the syntactic expression.
- E->getSubExprsBuffer()[0] = Record.readSubExpr();
+ E->getTrailingObjects()[0] = Record.readSubExpr();
// Read all the semantic expressions.
for (unsigned i = 0; i != numSemanticExprs; ++i) {
Expr *subExpr = Record.readSubExpr();
- E->getSubExprsBuffer()[i+1] = subExpr;
+ E->getTrailingObjects()[i + 1] = subExpr;
}
}