Author: erichkeane Date: 2024-05-23T07:52:17-07:00 New Revision: 477b48e8dc6fe2c911332fc40f2fa67f3be016b9
URL: https://github.com/llvm/llvm-project/commit/477b48e8dc6fe2c911332fc40f2fa67f3be016b9 DIFF: https://github.com/llvm/llvm-project/commit/477b48e8dc6fe2c911332fc40f2fa67f3be016b9.diff LOG: [OpenACC][NFC] Implement RecursiveASTVisitor for clauses Clauses that have sub expressions are storing them in 'children', so make sure we visit these properly. Added: Modified: clang/include/clang/AST/RecursiveASTVisitor.h Removed: ################################################################################ diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index a4b8d6ef61d56..4bbb4380cdd7f 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -30,6 +30,7 @@ #include "clang/AST/ExprOpenMP.h" #include "clang/AST/LambdaCapture.h" #include "clang/AST/NestedNameSpecifier.h" +#include "clang/AST/OpenACCClause.h" #include "clang/AST/OpenMPClause.h" #include "clang/AST/Stmt.h" #include "clang/AST/StmtCXX.h" @@ -510,6 +511,7 @@ template <typename Derived> class RecursiveASTVisitor { bool TraverseOpenACCAssociatedStmtConstruct(OpenACCAssociatedStmtConstruct *S); bool VisitOpenACCClauseList(ArrayRef<const OpenACCClause *>); + bool VisitOpenACCClause(const OpenACCClause *); }; template <typename Derived> @@ -3967,9 +3969,26 @@ bool RecursiveASTVisitor<Derived>::TraverseOpenACCAssociatedStmtConstruct( return true; } +template <typename Derived> +bool RecursiveASTVisitor<Derived>::VisitOpenACCClause(const OpenACCClause *C) { + for (const Stmt *Child : C->children()) + TRY_TO(TraverseStmt(const_cast<Stmt *>(Child))); + return true; +} + template <typename Derived> bool RecursiveASTVisitor<Derived>::VisitOpenACCClauseList( - ArrayRef<const OpenACCClause *>) { + ArrayRef<const OpenACCClause *> Clauses) { + + for (const auto *C : Clauses) + TRY_TO(VisitOpenACCClause(C)); +// if (const auto *WithCond = dyn_cast<OopenACCClauseWithCondition>(C); +// WithCond && WIthCond->hasConditionExpr()) { +// TRY_TO(TraverseStmt(WithCond->getConditionExpr()); +// } else if (const auto * +// } +// OpenACCClauseWithCondition::getConditionExpr/hasConditionExpr +//OpenACCClauseWithExprs::children (might be null?) // TODO OpenACC: When we have Clauses with expressions, we should visit them // here. return true; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits