[PATCH] D59466: [clang-tidy] openmp-exception-escape - a new check
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 22 07:14:41 PDT 2019
aaron.ballman added inline comments.
================
Comment at: clang-tidy/openmp/ExceptionEscapeCheck.cpp:32
+ llvm::StringSet<> IgnoredExceptions;
+ StringRef(RawIgnoredExceptions).split(IgnoredExceptionsVec, ",", -1, false);
+ IgnoredExceptions.insert(IgnoredExceptionsVec.begin(),
----------------
Do you need to trim any of the split strings?
================
Comment at: clang-tidy/openmp/ExceptionEscapeCheck.cpp:48
+ return;
+ // Similarly, if C++ Exceptions are not enabled, nothing to do.
+ if (!getLangOpts().CPlusPlus || !getLangOpts().CXXExceptions)
----------------
Do you have to worry about SEH exceptions in C for this functionality?
================
Comment at: clang-tidy/openmp/ExceptionEscapeCheck.cpp:72
+ // FIXME: We should provide more information about the exact location where
+ // the exception is thrown, maybe the full path the exception escapes
+
----------------
Missing a full stop at the end of the comment.
================
Comment at: clang-tidy/openmp/ExceptionEscapeCheck.cpp:75-76
+ diag(Directive->getBeginLoc(),
+ "An exception thrown inside of the OpenMP '%0' region is not caught in "
+ "that same region.")
+ << getOpenMPDirectiveName(Directive->getDirectiveKind());
----------------
Clang-tidy diagnostics are not complete sentences -- please make this horribly ungrammatical. ;-)
================
Comment at: docs/clang-tidy/checks/openmp-exception-escape.rst:9
+
+As per the OpenMP specification, structured block is an executable statement,
+possibly compound, with a single entry at the top and a single exit at the
----------------
, structured block -> , a structured block
================
Comment at: docs/clang-tidy/checks/openmp-exception-escape.rst:10-11
+As per the OpenMP specification, structured block is an executable statement,
+possibly compound, with a single entry at the top and a single exit at the
+bottom. Which means, ``throw`` may not be used to to 'exit' out of the
+structured block. If an exception is not caught in the same structured block
----------------
Does this mean setjmp/longjmp out of the block is also a dangerous activity? What about gotos?
================
Comment at: docs/clang-tidy/checks/openmp-exception-escape.rst:13
+structured block. If an exception is not caught in the same structured block
+it was thrown in, the behaviour is undefined / implementation defined,
+the program will likely terminate.
----------------
Which is it -- undefined or implementation-defined?
================
Comment at: docs/clang-tidy/checks/openmp-exception-escape.rst:23
+
+ Comma separated list containing type names which are not counted as thrown
+ exceptions in the check. Default value is an empty string.
----------------
Comma separated -> Comma-separated
Repository:
rCTE Clang Tools Extra
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D59466/new/
https://reviews.llvm.org/D59466
More information about the cfe-commits
mailing list