]> granicus.if.org Git - clang/commitdiff
Revert "[analyzer] ConditionBRVisitor: Remove GDM checking"
authorCsaba Dabis <dabis.csaba98@gmail.com>
Sat, 16 Mar 2019 10:44:49 +0000 (10:44 +0000)
committerCsaba Dabis <dabis.csaba98@gmail.com>
Sat, 16 Mar 2019 10:44:49 +0000 (10:44 +0000)
This reverts commit f962485adad9d646511fd3240c0408d9554e6784.

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

include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
include/clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h
lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
lib/StaticAnalyzer/Core/RangeConstraintManager.cpp

index 5b69299f78319db68a221d939d321db1ccd2f076..0a8712ea07202be168751e47c144595c2f94afed 100644 (file)
@@ -79,9 +79,6 @@ public:
   ConstraintManager() = default;
   virtual ~ConstraintManager();
 
-  virtual bool haveEqualConstraints(ProgramStateRef S1,
-                                    ProgramStateRef S2) const = 0;
-
   virtual ProgramStateRef assume(ProgramStateRef state,
                                  DefinedSVal Cond,
                                  bool Assumption) = 0;
index e5ff83eaea183e2e582b88311c5215b241641d71..3b1c638f48a33fead33b0428b038bd820c06ab15 100644 (file)
@@ -588,15 +588,11 @@ public:
   ProgramStateRef getPersistentStateWithGDM(ProgramStateRef FromState,
                                            ProgramStateRef GDMState);
 
-  bool haveEqualConstraints(ProgramStateRef S1, ProgramStateRef S2) const {
-    return ConstraintMgr->haveEqualConstraints(S1, S2);
-  }
-
-  bool haveEqualEnvironments(ProgramStateRef S1, ProgramStateRef S2) const {
+  bool haveEqualEnvironments(ProgramStateRef S1, ProgramStateRef S2) {
     return S1->Env == S2->Env;
   }
 
-  bool haveEqualStores(ProgramStateRef S1, ProgramStateRef S2) const {
+  bool haveEqualStores(ProgramStateRef S1, ProgramStateRef S2) {
     return S1->store == S2->store;
   }
 
index 4baaf244de788b74f894621f82064b01d3a27b7c..72f36014edc1d74f87c49ec01caac09fe8dffc1d 100644 (file)
@@ -220,11 +220,6 @@ public:
     OS << nl;
   }
 
-  bool haveEqualConstraints(ProgramStateRef S1,
-                            ProgramStateRef S2) const override {
-    return S1->get<ConstraintSMT>() == S2->get<ConstraintSMT>();
-  }
-
   bool canReasonAbout(SVal X) const override {
     const TargetInfo &TI = getBasicVals().getContext().getTargetInfo();
 
index bf7d330e4d5383843212c567ae8252a91f90cf80..49de53e53b0b7f23780b00b6edc5db039ae5c0b2 100644 (file)
@@ -1816,10 +1816,13 @@ ConditionBRVisitor::VisitNodeImpl(const ExplodedNode *N,
                                   BugReporterContext &BRC, BugReport &BR) {
   ProgramPoint progPoint = N->getLocation();
   ProgramStateRef CurrentState = N->getState();
-  ProgramStateRef PreviousState = N->getFirstPred()->getState();
+  ProgramStateRef PrevState = N->getFirstPred()->getState();
 
-  // If the constraint information does not changed there is no assumption.
-  if (BRC.getStateManager().haveEqualConstraints(CurrentState, PreviousState))
+  // Compare the GDMs of the state, because that is where constraints
+  // are managed.  Note that ensure that we only look at nodes that
+  // were generated by the analyzer engine proper, not checkers.
+  if (CurrentState->getGDM().getRoot() ==
+      PrevState->getGDM().getRoot())
     return nullptr;
 
   // If an assumption was made on a branch, it should be caught
index c6ebc85812d12c8b57d2de88659da73b839ed851..778f0f3016f886163496e3ce395f7db5ca9f8bda 100644 (file)
@@ -230,11 +230,6 @@ public:
   // Implementation for interface from ConstraintManager.
   //===------------------------------------------------------------------===//
 
-  bool haveEqualConstraints(ProgramStateRef S1,
-                            ProgramStateRef S2) const override {
-    return S1->get<ConstraintRange>() == S2->get<ConstraintRange>();
-  }
-
   bool canReasonAbout(SVal X) const override;
 
   ConditionTruthVal checkNull(ProgramStateRef State, SymbolRef Sym) override;