Author: Rahul Joshi Date: 2025-05-19T08:19:27-07:00 New Revision: f85d03c21518fa87239fa4e2d23267d0d5af9cf6
URL: https://github.com/llvm/llvm-project/commit/f85d03c21518fa87239fa4e2d23267d0d5af9cf6 DIFF: https://github.com/llvm/llvm-project/commit/f85d03c21518fa87239fa4e2d23267d0d5af9cf6.diff LOG: [NFC][Clang] Adopt simplified `getTrailingObjects` in Decl/StmtOpenACC (#140087) Adopt non-templated and array-ref returning forms of `getTrailingObjects` in DeclOpenACC and StmtOpenACC. Also use std::uninitialized_contruct_n to make the code a little concise. Added: Modified: clang/include/clang/AST/DeclOpenACC.h clang/include/clang/AST/StmtOpenACC.h clang/lib/AST/StmtOpenACC.cpp clang/lib/Serialization/ASTReaderStmt.cpp Removed: ################################################################################ diff --git a/clang/include/clang/AST/DeclOpenACC.h b/clang/include/clang/AST/DeclOpenACC.h index e5d1ec317fb18..c9c69ee5f64a3 100644 --- a/clang/include/clang/AST/DeclOpenACC.h +++ b/clang/include/clang/AST/DeclOpenACC.h @@ -73,10 +73,8 @@ class OpenACCDeclareDecl final OpenACCDeclareDecl(unsigned NumClauses) : OpenACCConstructDecl(OpenACCDeclare) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCDeclareDecl(DeclContext *DC, SourceLocation StartLoc, @@ -85,10 +83,9 @@ class OpenACCDeclareDecl final : OpenACCConstructDecl(OpenACCDeclare, DC, OpenACCDirectiveKind::Declare, StartLoc, DirLoc, EndLoc) { // Initialize the trailing storage. - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -117,10 +114,8 @@ class OpenACCRoutineDecl final OpenACCRoutineDecl(unsigned NumClauses) : OpenACCConstructDecl(OpenACCRoutine) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCRoutineDecl(DeclContext *DC, SourceLocation StartLoc, @@ -134,9 +129,8 @@ class OpenACCRoutineDecl final assert(LParenLoc.isValid() && "Cannot represent implicit name with this declaration"); // Initialize the trailing storage. - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: diff --git a/clang/include/clang/AST/StmtOpenACC.h b/clang/include/clang/AST/StmtOpenACC.h index bf667d4194298..c8f8b968b1c80 100644 --- a/clang/include/clang/AST/StmtOpenACC.h +++ b/clang/include/clang/AST/StmtOpenACC.h @@ -142,10 +142,8 @@ class OpenACCComputeConstruct final // We cannot send the TrailingObjects storage to the base class (which holds // a reference to the data) until it is constructed, so we have to set it // separately here. - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCComputeConstruct(OpenACCDirectiveKind K, SourceLocation Start, @@ -159,10 +157,9 @@ class OpenACCComputeConstruct final "represented by this type"); // Initialize the trailing storage. - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + setClauseList(getTrailingObjects(Clauses.size())); } void setStructuredBlock(Stmt *S) { setAssociatedStmt(S); } @@ -254,10 +251,8 @@ class OpenACCCombinedConstruct final OpenACCCombinedConstructClass, OpenACCDirectiveKind::Invalid, SourceLocation{}, SourceLocation{}, SourceLocation{}, /*AssociatedStmt=*/nullptr) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCCombinedConstruct(OpenACCDirectiveKind K, SourceLocation Start, @@ -270,9 +265,8 @@ class OpenACCCombinedConstruct final "Only parallel loop, serial loop, and kernels loop constructs " "should be represented by this type"); - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } void setStructuredBlock(Stmt *S) { setAssociatedStmt(S); } @@ -305,10 +299,8 @@ class OpenACCDataConstruct final OpenACCDataConstructClass, OpenACCDirectiveKind::Data, SourceLocation{}, SourceLocation{}, SourceLocation{}, /*AssociatedStmt=*/nullptr) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCDataConstruct(SourceLocation Start, SourceLocation DirectiveLoc, @@ -318,9 +310,8 @@ class OpenACCDataConstruct final : OpenACCAssociatedStmtConstruct(OpenACCDataConstructClass, OpenACCDirectiveKind::Data, Start, DirectiveLoc, End, StructuredBlock) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } void setStructuredBlock(Stmt *S) { setAssociatedStmt(S); } @@ -351,10 +342,8 @@ class OpenACCEnterDataConstruct final : OpenACCConstructStmt(OpenACCEnterDataConstructClass, OpenACCDirectiveKind::EnterData, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCEnterDataConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, @@ -362,9 +351,8 @@ class OpenACCEnterDataConstruct final : OpenACCConstructStmt(OpenACCEnterDataConstructClass, OpenACCDirectiveKind::EnterData, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -387,10 +375,8 @@ class OpenACCExitDataConstruct final : OpenACCConstructStmt(OpenACCExitDataConstructClass, OpenACCDirectiveKind::ExitData, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCExitDataConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, @@ -398,9 +384,8 @@ class OpenACCExitDataConstruct final : OpenACCConstructStmt(OpenACCExitDataConstructClass, OpenACCDirectiveKind::ExitData, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -425,10 +410,8 @@ class OpenACCHostDataConstruct final OpenACCHostDataConstructClass, OpenACCDirectiveKind::HostData, SourceLocation{}, SourceLocation{}, SourceLocation{}, /*AssociatedStmt=*/nullptr) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCHostDataConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, @@ -437,9 +420,8 @@ class OpenACCHostDataConstruct final : OpenACCAssociatedStmtConstruct(OpenACCHostDataConstructClass, OpenACCDirectiveKind::HostData, Start, DirectiveLoc, End, StructuredBlock) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } void setStructuredBlock(Stmt *S) { setAssociatedStmt(S); } @@ -490,11 +472,9 @@ class OpenACCWaitConstruct final assert(NumExprs >= 1 && "NumExprs should always be >= 1 because the 'devnum' " "expr is represented by a null if necessary"); - std::uninitialized_value_construct(getExprPtr(), - getExprPtr() + NumExprs); - std::uninitialized_value_construct(getTrailingObjects<OpenACCClause *>(), - getTrailingObjects<OpenACCClause *>() + - NumClauses); + std::uninitialized_value_construct_n(getExprPtr(), NumExprs); + std::uninitialized_value_construct_n(getTrailingObjects<OpenACCClause *>(), + NumClauses); setClauseList(MutableArrayRef(const_cast<const OpenACCClause **>( getTrailingObjects<OpenACCClause *>()), NumClauses)); @@ -533,13 +513,9 @@ class OpenACCWaitConstruct final return const_cast<Expr**>(getTrailingObjects<Expr *>()); } - llvm::ArrayRef<Expr *> getExprs() const { - return llvm::ArrayRef<Expr *>(getExprPtr(), NumExprs); - } + ArrayRef<Expr *> getExprs() const { return {getExprPtr(), NumExprs}; } - llvm::ArrayRef<Expr *> getExprs() { - return llvm::ArrayRef<Expr *>(getExprPtr(), NumExprs); - } + ArrayRef<Expr *> getExprs() { return {getExprPtr(), NumExprs}; } public: static bool classof(const Stmt *T) { @@ -597,8 +573,7 @@ class OpenACCCacheConstruct final OpenACCDirectiveKind::Cache, SourceLocation{}, SourceLocation{}, SourceLocation{}), NumVars(NumVars) { - std::uninitialized_value_construct(getVarListPtr(), - getVarListPtr() + NumVars); + std::uninitialized_value_construct_n(getTrailingObjects(), NumVars); } OpenACCCacheConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation LParenLoc, SourceLocation ReadOnlyLoc, @@ -610,21 +585,13 @@ class OpenACCCacheConstruct final ParensLoc(LParenLoc, RParenLoc), ReadOnlyLoc(ReadOnlyLoc), NumVars(VarList.size()) { - llvm::uninitialized_copy(VarList, getVarListPtr()); - } - - Expr **getVarListPtr() const { - return const_cast<Expr **>(getTrailingObjects<Expr *>()); + llvm::uninitialized_copy(VarList, getTrailingObjects()); } public: - llvm::ArrayRef<Expr *> getVarList() const { - return llvm::ArrayRef<Expr *>(getVarListPtr(), NumVars); - } + ArrayRef<Expr *> getVarList() const { return getTrailingObjects(NumVars); } - llvm::ArrayRef<Expr *> getVarList() { - return llvm::ArrayRef<Expr *>(getVarListPtr(), NumVars); - } + MutableArrayRef<Expr *> getVarList() { return getTrailingObjects(NumVars); } static bool classof(const Stmt *T) { return T->getStmtClass() == OpenACCCacheConstructClass; @@ -644,12 +611,12 @@ class OpenACCCacheConstruct final SourceLocation getReadOnlyLoc() const { return ReadOnlyLoc; } child_range children() { - Stmt **Begin = reinterpret_cast<Stmt **>(getVarListPtr()); + Stmt **Begin = reinterpret_cast<Stmt **>(getTrailingObjects()); return child_range(Begin, Begin + NumVars); } const_child_range children() const { - Stmt *const *Begin = reinterpret_cast<Stmt *const *>(getVarListPtr()); + Stmt *const *Begin = reinterpret_cast<Stmt *const *>(getTrailingObjects()); return const_child_range(Begin, Begin + NumVars); } }; @@ -664,10 +631,8 @@ class OpenACCInitConstruct final : OpenACCConstructStmt(OpenACCInitConstructClass, OpenACCDirectiveKind::Init, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCInitConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, @@ -675,9 +640,8 @@ class OpenACCInitConstruct final : OpenACCConstructStmt(OpenACCInitConstructClass, OpenACCDirectiveKind::Init, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -702,10 +666,8 @@ class OpenACCShutdownConstruct final : OpenACCConstructStmt(OpenACCShutdownConstructClass, OpenACCDirectiveKind::Shutdown, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCShutdownConstruct(SourceLocation Start, SourceLocation DirectiveLoc, SourceLocation End, @@ -713,9 +675,8 @@ class OpenACCShutdownConstruct final : OpenACCConstructStmt(OpenACCShutdownConstructClass, OpenACCDirectiveKind::Shutdown, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -739,10 +700,8 @@ class OpenACCSetConstruct final : OpenACCConstructStmt(OpenACCSetConstructClass, OpenACCDirectiveKind::Set, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCSetConstruct(SourceLocation Start, SourceLocation DirectiveLoc, @@ -751,9 +710,8 @@ class OpenACCSetConstruct final : OpenACCConstructStmt(OpenACCSetConstructClass, OpenACCDirectiveKind::Set, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -777,9 +735,7 @@ class OpenACCUpdateConstruct final : OpenACCConstructStmt(OpenACCUpdateConstructClass, OpenACCDirectiveKind::Update, SourceLocation{}, SourceLocation{}, SourceLocation{}) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); } @@ -789,9 +745,8 @@ class OpenACCUpdateConstruct final : OpenACCConstructStmt(OpenACCUpdateConstructClass, OpenACCDirectiveKind::Update, Start, DirectiveLoc, End) { - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); + setClauseList(getTrailingObjects(Clauses.size())); } public: @@ -821,10 +776,8 @@ class OpenACCAtomicConstruct final OpenACCAtomicConstructClass, OpenACCDirectiveKind::Atomic, SourceLocation{}, SourceLocation{}, SourceLocation{}, /*AssociatedStmt=*/nullptr) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCAtomicConstruct(SourceLocation Start, SourceLocation DirectiveLoc, @@ -836,10 +789,9 @@ class OpenACCAtomicConstruct final DirectiveLoc, End, AssociatedStmt), AtomicKind(AtKind) { // Initialize the trailing storage. - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + setClauseList(getTrailingObjects(Clauses.size())); } void setAssociatedStmt(Stmt *S) { diff --git a/clang/lib/AST/StmtOpenACC.cpp b/clang/lib/AST/StmtOpenACC.cpp index 5544fcacaa360..bc5072187b891 100644 --- a/clang/lib/AST/StmtOpenACC.cpp +++ b/clang/lib/AST/StmtOpenACC.cpp @@ -41,10 +41,8 @@ OpenACCLoopConstruct::OpenACCLoopConstruct(unsigned NumClauses) OpenACCLoopConstructClass, OpenACCDirectiveKind::Loop, SourceLocation{}, SourceLocation{}, SourceLocation{}, /*AssociatedStmt=*/nullptr) { - std::uninitialized_value_construct( - getTrailingObjects<const OpenACCClause *>(), - getTrailingObjects<const OpenACCClause *>() + NumClauses); - setClauseList(getTrailingObjects<const OpenACCClause *>(NumClauses)); + std::uninitialized_value_construct_n(getTrailingObjects(), NumClauses); + setClauseList(getTrailingObjects(NumClauses)); } OpenACCLoopConstruct::OpenACCLoopConstruct( @@ -60,10 +58,9 @@ OpenACCLoopConstruct::OpenACCLoopConstruct( assert((Loop == nullptr || isa<ForStmt, CXXForRangeStmt>(Loop)) && "Associated Loop not a for loop?"); // Initialize the trailing storage. - llvm::uninitialized_copy(Clauses, - getTrailingObjects<const OpenACCClause *>()); + llvm::uninitialized_copy(Clauses, getTrailingObjects()); - setClauseList(getTrailingObjects<const OpenACCClause *>(Clauses.size())); + setClauseList(getTrailingObjects(Clauses.size())); } OpenACCLoopConstruct *OpenACCLoopConstruct::CreateEmpty(const ASTContext &C, diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index f41cfcc53a35d..bf352c314b958 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -2935,7 +2935,7 @@ void ASTStmtReader::VisitOpenACCCacheConstruct(OpenACCCacheConstruct *S) { S->ParensLoc = Record.readSourceRange(); S->ReadOnlyLoc = Record.readSourceLocation(); for (unsigned I = 0; I < S->NumVars; ++I) - S->getVarListPtr()[I] = cast<Expr>(Record.readSubStmt()); + S->getVarList()[I] = cast<Expr>(Record.readSubStmt()); } void ASTStmtReader::VisitOpenACCAtomicConstruct(OpenACCAtomicConstruct *S) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits