[PATCH] D57113: [clang-tidy] openmp-use-default-none - a new module and a check
Jonas Toth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 25 07:00:02 PST 2019
JonasToth added inline comments.
================
Comment at: clang-tidy/openmp/UseDefaultNoneCheck.cpp:113
+void UseDefaultNoneCheck::registerMatchers(MatchFinder *Finder) {
+ // If OpenMP is not enabled, don't register the check, it won't find anything.
+ if (!getLangOpts().OpenMP)
----------------
Is that the case? Will the pragmas be ignored if non-omp?
You could reorder that sentence `Don't register the check if OpenMP is not enabled as the directives are not considered in the AST.` or so.
================
Comment at: clang-tidy/openmp/UseDefaultNoneCheck.cpp:131
+ Result.Nodes.getNodeAs<OMPExecutableDirective>("directive");
+ assert(Directive != nullptr);
+
----------------
lebedev.ri wrote:
> JonasToth wrote:
> > assert without message, but probably redundant anyway, because the matcher can only fire if `directive` matched.
> Hm, i can drop it, but in previous reviews i have seen this assert being requested to be *added*.
You can leave it, but please add an message to the assertion.
================
Comment at: clang-tidy/openmp/UseDefaultNoneCheck.h:18
+
+/// 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
----------------
contain _a_ ``default`` clause
================
Comment at: clang-tidy/openmp/UseDefaultNoneCheck.h:19
+/// 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.
----------------
double back-tick in dont, please use the normal straight tick instead
================
Comment at: clang-tidy/openmp/UseDefaultNoneCheck.h:20
+/// 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.
+///
----------------
to use _the_
================
Comment at: docs/clang-tidy/checks/openmp-use-default-none.rst:6
+
+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
----------------
not sure, but i think all the commas in this sentence can be dropped. The comma in front of `or` for sure.
================
Comment at: docs/clang-tidy/checks/openmp-use-default-none.rst:11
+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.
----------------
forces _developers_
================
Comment at: docs/clang-tidy/checks/openmp-use-default-none.rst:12
+being implicitly determined, and thus forces developer to be explicit about the
+desired data scoping for each variable.
+
----------------
JonasToth wrote:
> If I understand correctly the issue is more about implicitly shared variables that lead to data-races and bad access patterns, is that correct?
> If so it might clarify the reason for this check, if added directly in the first motivational sentence.
is it scoping or rather sharing? The scope is C++-terrain or at least used in C++-Speak. Maybe there is a unambiguous word instead?
================
Comment at: docs/clang-tidy/checks/openmp-use-default-none.rst:28
+ void t1() {
+ #pragma omp parallel // <- warning: OpenMP directive 'parallel' is allowed to contain the 'default' clause, but no 'default' clause is specified. Consider specifying 'default(none)' clause.
+ ;
----------------
Very long line. You can move the warning to the next line and wrap it to match the 80 columns limit.
================
Comment at: test/clang-tidy/openmp-use-default-none.cpp:53
+// 'parallel' directive can have 'default' clause, and said clause is specified,
+// with 'none' kind, all good.
+void t5(const int a) {
----------------
Please add basic test-cases for the other constructs that are allowed to have the `default` specified.
Repository:
rCTE Clang Tools Extra
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D57113/new/
https://reviews.llvm.org/D57113
More information about the cfe-commits
mailing list