summaryrefslogtreecommitdiff
path: root/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp
diff options
context:
space:
mode:
authorTom Stellard <tstellar@redhat.com>2018-11-29 21:27:29 +0000
committerTom Stellard <tstellar@redhat.com>2018-11-29 21:27:29 +0000
commit7ba0a8daae10edc2bf03149832655eccbb2e2304 (patch)
tree8db456cc6863bbbe606bbd9cbe1077cb2c1c7c40 /clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp
parente35cea20fbc7345762141ff3d32fb75e50543262 (diff)
Merging r344444 and r344445:
------------------------------------------------------------------------ r344444 | baloghadamsoftware | 2018-10-13 03:34:52 -0700 (Sat, 13 Oct 2018) | 11 lines [clang-tidy] Optimize query in bugprone-exception-escape Checking whether a functions throws indirectly may be very expensive because it needs to visit its whole call graph. Therefore we should first check whether the function is forbidden to throw and only check whether it throws afterward. This also seems to solve bug https://bugs.llvm.org/show_bug.cgi?id=39167 where the execution time is so long that it seems to hang. Differential Revision: https://reviews.llvm.org/D53187 ------------------------------------------------------------------------ ------------------------------------------------------------------------ r344445 | baloghadamsoftware | 2018-10-13 04:17:59 -0700 (Sat, 13 Oct 2018) | 3 lines [clang-tidy] Fix for typos in the tests for `bugprone-exception-escape` ------------------------------------------------------------------------
Diffstat (limited to 'clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp
index a5e54c0a182..416cf3fd874 100644
--- a/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/ExceptionEscapeCheck.cpp
@@ -187,12 +187,12 @@ void ExceptionEscapeCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
void ExceptionEscapeCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(
- functionDecl(allOf(throws(unless(isIgnored(IgnoredExceptions))),
- anyOf(isNoThrow(), cxxDestructorDecl(),
+ functionDecl(allOf(anyOf(isNoThrow(), cxxDestructorDecl(),
cxxConstructorDecl(isMoveConstructor()),
cxxMethodDecl(isMoveAssignmentOperator()),
hasName("main"), hasName("swap"),
- isEnabled(FunctionsThatShouldNotThrow))))
+ isEnabled(FunctionsThatShouldNotThrow)),
+ throws(unless(isIgnored(IgnoredExceptions)))))
.bind("thrower"),
this);
}