[clang] [Clang][Unittest] Support for `target` directive and `from` clause in clang unittests (PR #150580)
Amit Tiwari via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 25 02:17:22 PDT 2025
https://github.com/amitamd7 updated https://github.com/llvm/llvm-project/pull/150580
>From 4b0be55b282fcd5482ef4f8b52cb07127501c254 Mon Sep 17 00:00:00 2001
From: amtiwari <amtiwari at amd.com>
Date: Fri, 25 Jul 2025 02:45:34 -0400
Subject: [PATCH] support_for_target_directive_clang_unittests
---
clang/include/clang/ASTMatchers/ASTMatchers.h | 27 +++++++++++++++++++
clang/lib/ASTMatchers/ASTMatchersInternal.cpp | 4 +++
clang/lib/ASTMatchers/Dynamic/Registry.cpp | 2 ++
3 files changed, 33 insertions(+)
diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h
index 08c898f7758ec..5ca075528add5 100644
--- a/clang/include/clang/ASTMatchers/ASTMatchers.h
+++ b/clang/include/clang/ASTMatchers/ASTMatchers.h
@@ -8735,6 +8735,21 @@ AST_MATCHER_P(OMPExecutableDirective, hasAnyClause,
Builder) != Clauses.end();
}
+/// Matches any ``#pragma omp target update`` executable directive.
+///
+/// Given
+///
+/// \code
+/// #pragma omp target update from(a)
+/// #pragma omp target update to(b)
+/// \endcode
+///
+/// ``ompTargetUpdateDirective()`` matches both ``omp target update from(a)``
+/// and ``omp target update to(b)``.
+extern const internal::VariadicDynCastAllOfMatcher<Stmt,
+ OMPTargetUpdateDirective>
+ ompTargetUpdateDirective;
+
/// Matches OpenMP ``default`` clause.
///
/// Given
@@ -8848,6 +8863,18 @@ AST_MATCHER_P(OMPExecutableDirective, isAllowedToContainClauseKind,
Finder->getASTContext().getLangOpts().OpenMP);
}
+/// Matches OpenMP ``from`` clause.
+///
+/// Given
+///
+/// \code
+/// #pragma omp target update from(a)
+/// \endcode
+///
+/// ``ompFromClause()`` matches ``from(a)``.
+extern const internal::VariadicDynCastAllOfMatcher<OMPClause, OMPFromClause>
+ ompFromClause;
+
//----------------------------------------------------------------------------//
// End OpenMP handling.
//----------------------------------------------------------------------------//
diff --git a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
index 80dc888811657..7580cee3d8aed 100644
--- a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
+++ b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
@@ -1125,8 +1125,12 @@ AST_TYPELOC_TRAVERSE_MATCHER_DEF(
const internal::VariadicDynCastAllOfMatcher<Stmt, OMPExecutableDirective>
ompExecutableDirective;
+const internal::VariadicDynCastAllOfMatcher<Stmt, OMPTargetUpdateDirective>
+ ompTargetUpdateDirective;
const internal::VariadicDynCastAllOfMatcher<OMPClause, OMPDefaultClause>
ompDefaultClause;
+const internal::VariadicDynCastAllOfMatcher<OMPClause, OMPFromClause>
+ ompFromClause;
const internal::VariadicDynCastAllOfMatcher<Decl, CXXDeductionGuideDecl>
cxxDeductionGuideDecl;
diff --git a/clang/lib/ASTMatchers/Dynamic/Registry.cpp b/clang/lib/ASTMatchers/Dynamic/Registry.cpp
index 562df715e08ae..e74fae3c50029 100644
--- a/clang/lib/ASTMatchers/Dynamic/Registry.cpp
+++ b/clang/lib/ASTMatchers/Dynamic/Registry.cpp
@@ -531,7 +531,9 @@ RegistryMaps::RegistryMaps() {
REGISTER_MATCHER(ofClass);
REGISTER_MATCHER(ofKind);
REGISTER_MATCHER(ompDefaultClause);
+ REGISTER_MATCHER(ompFromClause);
REGISTER_MATCHER(ompExecutableDirective);
+ REGISTER_MATCHER(ompTargetUpdateDirective);
REGISTER_MATCHER(on);
REGISTER_MATCHER(onImplicitObjectArgument);
REGISTER_MATCHER(opaqueValueExpr);
More information about the cfe-commits
mailing list