diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2019-03-21 15:33:10 +0000 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2019-03-21 15:33:10 +0000 |
commit | 413415606b080f8cd0881fc8d33ec3974655eecb (patch) | |
tree | b0595de548031af70e6becb6435ad24a2b4be81b /unittests/ASTMatchers | |
parent | f3fae3fc58401b1955106ac46249e9aff2749ab2 (diff) | |
download | clang-413415606b080f8cd0881fc8d33ec3974655eecb.tar.gz |
[ASTMatchers][OpenMP] Add base ompExecutableDirective() matcher.
Summary:
A simple matcher for `OMPExecutableDirective` Stmt type.
Split off from D57113.
Reviewers: gribozavr, aaron.ballman, JonasToth, george.karpenkov
Reviewed By: gribozavr, aaron.ballman
Subscribers: guansong, jdoerfert, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D59453
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@356674 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ASTMatchers')
-rw-r--r-- | unittests/ASTMatchers/ASTMatchersNodeTest.cpp | 24 | ||||
-rw-r--r-- | unittests/ASTMatchers/ASTMatchersTest.h | 12 |
2 files changed, 36 insertions, 0 deletions
diff --git a/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/unittests/ASTMatchers/ASTMatchersNodeTest.cpp index 3f9981cd6d..4bce409cab 100644 --- a/unittests/ASTMatchers/ASTMatchersNodeTest.cpp +++ b/unittests/ASTMatchers/ASTMatchersNodeTest.cpp @@ -1765,5 +1765,29 @@ TEST(ObjCAutoreleaseMatcher, AutoreleasePool) { EXPECT_FALSE(matchesObjC(ObjCStringNoPool, autoreleasePoolStmt())); } +TEST(OMPExecutableDirective, Matches) { + auto Matcher = stmt(ompExecutableDirective()); + + const std::string Source0 = R"( +void x() { +#pragma omp parallel +; +})"; + EXPECT_TRUE(matchesWithOpenMP(Source0, Matcher)); + + const std::string Source1 = R"( +void x() { +#pragma omp taskyield +; +})"; + EXPECT_TRUE(matchesWithOpenMP(Source1, Matcher)); + + const std::string Source2 = R"( +void x() { +; +})"; + EXPECT_TRUE(notMatchesWithOpenMP(Source2, Matcher)); +} + } // namespace ast_matchers } // namespace clang diff --git a/unittests/ASTMatchers/ASTMatchersTest.h b/unittests/ASTMatchers/ASTMatchersTest.h index b22cafefd9..3f3118c2ef 100644 --- a/unittests/ASTMatchers/ASTMatchersTest.h +++ b/unittests/ASTMatchers/ASTMatchersTest.h @@ -235,6 +235,18 @@ testing::AssertionResult notMatchesWithCuda(const std::string &Code, } template <typename T> +testing::AssertionResult matchesWithOpenMP(const std::string &Code, + const T &AMatcher) { + return matchesConditionally(Code, AMatcher, true, "-fopenmp"); +} + +template <typename T> +testing::AssertionResult notMatchesWithOpenMP(const std::string &Code, + const T &AMatcher) { + return matchesConditionally(Code, AMatcher, false, "-fopenmp"); +} + +template <typename T> testing::AssertionResult matchAndVerifyResultConditionally(const std::string &Code, const T &AMatcher, std::unique_ptr<BoundNodesCallback> FindResultVerifier, |