]> granicus.if.org Git - clang/commitdiff
[analyzer] [NFC] Remove "removeInvalidation" from visitor API
authorGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 12 Jun 2018 20:51:19 +0000 (20:51 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Tue, 12 Jun 2018 20:51:19 +0000 (20:51 +0000)
removeInvalidation is a very problematic API, as it makes suppression
order-dependent.
Moreover, it was used only once, and could be rewritten in a much
cleaner way.

Differential Revision: https://reviews.llvm.org/D48045

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@334542 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
lib/StaticAnalyzer/Core/BugReporterVisitors.cpp

index 2f04a3b0fc0e6f204072932ad077c0e7a9387e4d..67d2dedc15854e910facd7a180e46f7a317bd493 100644 (file)
@@ -253,13 +253,6 @@ public:
   void markInvalid(const void *Tag, const void *Data) {
     Invalidations.insert(std::make_pair(Tag, Data));
   }
-
-  /// Reverses the effects of a previous invalidation.
-  ///
-  /// \sa markInvalid
-  void removeInvalidation(const void *Tag, const void *Data) {
-    Invalidations.erase(std::make_pair(Tag, Data));
-  }
   
   /// Return the canonical declaration, be it a method or class, where
   /// this issue semantically occurred.
index 75126c6c3785b88311d9cc5baa7933b3a15add93..3cac6cb328412727a56f49827e700f02f8d5e66e 100644 (file)
@@ -616,6 +616,7 @@ class ReturnVisitor : public BugReporterVisitorImpl<ReturnVisitor> {
   } Mode = Initial;
 
   bool EnableNullFPSuppression;
+  bool ShouldInvalidate = true;
 
 public:
   ReturnVisitor(const StackFrameContext *Frame, bool Suppressed)
@@ -845,7 +846,7 @@ public:
 
       if (bugreporter::trackNullOrUndefValue(N, ArgE, BR, /*IsArg=*/true,
                                              EnableNullFPSuppression))
-        BR.removeInvalidation(ReturnVisitor::getTag(), StackFrame);
+        ShouldInvalidate = false;
 
       // If we /can't/ track the null pointer, we should err on the side of
       // false negatives, and continue towards marking this report invalid.
@@ -873,7 +874,7 @@ public:
 
   void finalizeVisitor(BugReporterContext &BRC, const ExplodedNode *N,
                        BugReport &BR) override {
-    if (EnableNullFPSuppression)
+    if (EnableNullFPSuppression && ShouldInvalidate)
       BR.markInvalid(ReturnVisitor::getTag(), StackFrame);
   }
 };