libAnalysis:
- Remove the 'isFeasible' flag from all uses of 'Assume'.
- Remove the 'Assume' methods from GRStateManager.  Now the only way to
  create a new GRState with an assumption is to use the new 'assume' methods
  in GRState.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73731 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/SimpleConstraintManager.h b/lib/Analysis/SimpleConstraintManager.h
index fb41e2f..bd18b6a 100644
--- a/lib/Analysis/SimpleConstraintManager.h
+++ b/lib/Analysis/SimpleConstraintManager.h
@@ -29,50 +29,58 @@
   
   bool canReasonAbout(SVal X) const;
   
-  virtual const GRState* Assume(const GRState* St, SVal Cond, bool Assumption,
-                                bool& isFeasible);
+  virtual const GRState *Assume(const GRState *state, SVal Cond,
+                                bool Assumption);
 
-  const GRState* Assume(const GRState* St, Loc Cond, bool Assumption,
-                        bool& isFeasible);
+  //===------------------------------------------------------------------===//
+  // Common implementation for the interface provided by ConstraintManager.
+  //===------------------------------------------------------------------===//
+  
+  const GRState *Assume(const GRState *state, Loc Cond, bool Assumption);
 
-  const GRState* AssumeAux(const GRState* St, Loc Cond,bool Assumption,
-                           bool& isFeasible);
+  const GRState *Assume(const GRState *state, NonLoc Cond, bool Assumption);
 
-  const GRState* Assume(const GRState* St, NonLoc Cond, bool Assumption,
-                        bool& isFeasible);
+  const GRState *AssumeSymInt(const GRState *state, bool Assumption,
+                              const SymIntExpr *SE);
+  
+  const GRState *AssumeInBound(const GRState *state, SVal Idx, SVal UpperBound,
+                               bool Assumption);
+  
+protected:
+  
+  //===------------------------------------------------------------------===//
+  // Interface that subclasses must implement.
+  //===------------------------------------------------------------------===//
+  
+  virtual const GRState *AssumeSymNE(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
 
-  const GRState* AssumeAux(const GRState* St, NonLoc Cond, bool Assumption,
-                           bool& isFeasible);
+  virtual const GRState *AssumeSymEQ(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
 
-  const GRState* AssumeSymInt(const GRState* St, bool Assumption,
-                              const SymIntExpr *SE, bool& isFeasible);
+  virtual const GRState *AssumeSymLT(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
 
-  virtual const GRState* AssumeSymNE(const GRState* St, SymbolRef sym,
-                                     const llvm::APSInt& V,
-                                     bool& isFeasible) = 0;
+  virtual const GRState *AssumeSymGT(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
 
-  virtual const GRState* AssumeSymEQ(const GRState* St, SymbolRef sym,
-                                     const llvm::APSInt& V,
-                                     bool& isFeasible) = 0;
+  virtual const GRState *AssumeSymLE(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
 
-  virtual const GRState* AssumeSymLT(const GRState* St, SymbolRef sym,
-                                     const llvm::APSInt& V,
-                                     bool& isFeasible) = 0;
+  virtual const GRState *AssumeSymGE(const GRState *state, SymbolRef sym,
+                                     const llvm::APSInt& V) = 0;
+  
+  //===------------------------------------------------------------------===//
+  // Internal implementation.
+  //===------------------------------------------------------------------===//
+  
+  const GRState *AssumeAux(const GRState *state, Loc Cond,bool Assumption);
+  
+  const GRState *AssumeAux(const GRState *state, NonLoc Cond, bool Assumption);
 
-  virtual const GRState* AssumeSymGT(const GRState* St, SymbolRef sym,
-                                     const llvm::APSInt& V,
-                                     bool& isFeasible) = 0;
-
-  virtual const GRState* AssumeSymLE(const GRState* St, SymbolRef sym,
-				     const llvm::APSInt& V,
-				     bool& isFeasible) = 0;
-
-  virtual const GRState* AssumeSymGE(const GRState* St, SymbolRef sym,
-				     const llvm::APSInt& V,
-				     bool& isFeasible) = 0;
-
-  const GRState* AssumeInBound(const GRState* St, SVal Idx, SVal UpperBound,
-                               bool Assumption, bool& isFeasible);
+  //===------------------------------------------------------------------===//
+  // FIXME: These can probably be removed now.
+  //===------------------------------------------------------------------===//
 
 private:
   BasicValueFactory& getBasicVals() { return StateMgr.getBasicVals(); }