diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2019-03-22 19:46:12 +0000 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2019-03-22 19:46:12 +0000 |
commit | cbbf92825f0d7a2b6925e93b58705443345ab57a (patch) | |
tree | 2fb58c693fd6f293330769076220a4073acb319a /clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h | |
parent | 819bedf3a1ba3f09037fe9a4a732dccbd9defb94 (diff) | |
download | llvm-cbbf92825f0d7a2b6925e93b58705443345ab57a.zip llvm-cbbf92825f0d7a2b6925e93b58705443345ab57a.tar.gz llvm-cbbf92825f0d7a2b6925e93b58705443345ab57a.tar.bz2 |
[clang-tidy] openmp-use-default-none - a new check
Summary:
Finds OpenMP directives that are allowed to contain `default` clause,
but either don't specify it, or the clause is specified but with the kind
other than `none`, and suggests to use `default(none)` clause.
Using `default(none)` clause changes the default variable visibility from
being implicitly determined, and thus forces developer to be explicit about the
desired data scoping for each variable.
Reviewers: JonasToth, aaron.ballman, xazax.hun, hokein, gribozavr
Reviewed By: JonasToth, aaron.ballman
Subscribers: jdoerfert, openmp-commits, klimek, sbenza, arphaman, Eugene.Zelenko, ABataev, mgorny, rnkovacs, guansong, cfe-commits
Tags: #clang-tools-extra, #openmp, #clang
Differential Revision: https://reviews.llvm.org/D57113
llvm-svn: 356801
Diffstat (limited to 'clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h')
-rw-r--r-- | clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h b/clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h new file mode 100644 index 0000000..c5ff882 --- /dev/null +++ b/clang-tools-extra/clang-tidy/openmp/UseDefaultNoneCheck.h @@ -0,0 +1,36 @@ +//===--- UseDefaultNoneCheck.h - clang-tidy ---------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_OPENMP_USEDEFAULTNONECHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_OPENMP_USEDEFAULTNONECHECK_H + +#include "../ClangTidy.h" + +namespace clang { +namespace tidy { +namespace openmp { + +/// Finds OpenMP directives that are allowed to contain a ``default`` clause, +/// but either don't specify it or the clause is specified but with the kind +/// other than ``none``, and suggests to use the ``default(none)`` clause. +/// +/// For the user-facing documentation see: +/// http://clang.llvm.org/extra/clang-tidy/checks/openmp-use-default-none.html +class UseDefaultNoneCheck : public ClangTidyCheck { +public: + UseDefaultNoneCheck(StringRef Name, ClangTidyContext *Context) + : ClangTidyCheck(Name, Context) {} + void registerMatchers(ast_matchers::MatchFinder *Finder) override; + void check(const ast_matchers::MatchFinder::MatchResult &Result) override; +}; + +} // namespace openmp +} // namespace tidy +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_OPENMP_USEDEFAULTNONECHECK_H |