[clang] 477b48e - [OpenACC][NFC] Implement RecursiveASTVisitor for clauses
via cfe-commits
cfe-commits at lists.llvm.org
Thu May 23 07:52:22 PDT 2024
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;
More information about the cfe-commits
mailing list