[PATCH] D49693: [analyzer] Try to minimize the number of equivalent bug reports evaluated by the refutation manager
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 25 05:50:10 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL337920: [analyzer] Try to minimize the number of equivalent bug reports evaluated by… (authored by mramalho, committed by ).
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D49693?vs=156931&id=157249#toc
Repository:
rL LLVM
https://reviews.llvm.org/D49693
Files:
cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
Index: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
@@ -2605,8 +2605,6 @@
// Register refutation visitors first, if they mark the bug invalid no
// further analysis is required
R->addVisitor(llvm::make_unique<LikelyFalsePositiveSuppressionBRVisitor>());
- if (Opts.shouldCrosscheckWithZ3())
- R->addVisitor(llvm::make_unique<FalsePositiveRefutationBRVisitor>());
// Register additional node visitors.
R->addVisitor(llvm::make_unique<NilReceiverBRVisitor>());
@@ -2619,9 +2617,24 @@
std::unique_ptr<VisitorsDiagnosticsTy> visitorNotes =
generateVisitorsDiagnostics(R, ErrorNode, BRC);
- if (R->isValid())
- return std::make_pair(R, std::move(visitorNotes));
+ if (R->isValid()) {
+ if (Opts.shouldCrosscheckWithZ3()) {
+ // If crosscheck is enabled, remove all visitors, add the refutation
+ // visitor and check again
+ R->clearVisitors();
+ R->addVisitor(llvm::make_unique<FalsePositiveRefutationBRVisitor>());
+
+ // We don't overrite the notes inserted by other visitors because the
+ // refutation manager does not add any new note to the path
+ generateVisitorsDiagnostics(R, ErrorGraph.ErrorNode, BRC);
+ }
+
+ // Check if the bug is still valid
+ if (R->isValid())
+ return std::make_pair(R, std::move(visitorNotes));
+ }
}
+
return std::make_pair(nullptr, llvm::make_unique<VisitorsDiagnosticsTy>());
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49693.157249.patch
Type: text/x-patch
Size: 1642 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180725/25523f8d/attachment-0001.bin>
More information about the llvm-commits
mailing list