diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Analysis/PathSensitive/GRState.h | 32 | ||||
| -rw-r--r-- | clang/lib/Analysis/BasicStore.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Analysis/CFRefCount.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Analysis/GRExprEngine.cpp | 4 | 
4 files changed, 13 insertions, 27 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/GRState.h b/clang/include/clang/Analysis/PathSensitive/GRState.h index 7c9c80bea2c..285bd02671b 100644 --- a/clang/include/clang/Analysis/PathSensitive/GRState.h +++ b/clang/include/clang/Analysis/PathSensitive/GRState.h @@ -199,6 +199,14 @@ public:                                 bool assumption) const;    //==---------------------------------------------------------------------==// +  // Utility methods for getting regions. +  //==---------------------------------------------------------------------==// + +  const VarRegion* getRegion(const VarDecl* D) const; + +  const MemRegion* getSelfRegion() const; + +  //==---------------------------------------------------------------------==//    // Binding and retrieving values to/from the environment and symbolic store.    //==---------------------------------------------------------------------==// @@ -431,18 +439,7 @@ private:    /// Liveness - live-variables information of the ValueDecl* and block-level    /// Expr* in the CFG. Used to get initial store and prune out dead state.    LiveVariables& Liveness; - -private: - -  Environment RemoveBlkExpr(const Environment& Env, Expr* E) { -    return EnvMgr.RemoveBlkExpr(Env, E); -  } -  // FIXME: Remove when we do lazy initializaton of variable bindings. -//   const GRState* BindVar(const GRState* St, VarDecl* D, SVal V) { -//     return SetSVal(St, getLoc(D), V); -//   } -      public:    GRStateManager(ASTContext& Ctx, @@ -464,7 +461,7 @@ public:    ~GRStateManager(); -  const GRState* getInitialState(); +  const GRState *getInitialState();    ASTContext &getContext() { return ValueMgr.getContext(); }    const ASTContext &getContext() const { return ValueMgr.getContext(); }                @@ -510,17 +507,6 @@ public:      NewSt.Env = EnvMgr.RemoveSubExprBindings(NewSt.Env);      return getPersistentState(NewSt);    } - -   -  // Utility methods for getting regions. -   -  VarRegion* getRegion(const VarDecl* D) { -    return getRegionManager().getVarRegion(D); -  } -   -  const MemRegion* getSelfRegion(const GRState* state) { -    return StoreMgr->getSelfRegion(state->getStore()); -  }  private: diff --git a/clang/lib/Analysis/BasicStore.cpp b/clang/lib/Analysis/BasicStore.cpp index 6b346cd5255..e4ea2605487 100644 --- a/clang/lib/Analysis/BasicStore.cpp +++ b/clang/lib/Analysis/BasicStore.cpp @@ -535,7 +535,7 @@ Store BasicStoreManager::getInitialStore() {        // Initialize globals and parameters to symbolic values.        // Initialize local variables to undefined. -      const MemRegion *R = StateMgr.getRegion(VD); +      const MemRegion *R = ValMgr.getRegionManager().getVarRegion(VD);        SVal X = (VD->hasGlobalStorage() || isa<ParmVarDecl>(VD) ||                  isa<ImplicitParamDecl>(VD))              ? ValMgr.getRegionValueSymbolVal(R) diff --git a/clang/lib/Analysis/CFRefCount.cpp b/clang/lib/Analysis/CFRefCount.cpp index 46333a74f27..d4d10cf5d15 100644 --- a/clang/lib/Analysis/CFRefCount.cpp +++ b/clang/lib/Analysis/CFRefCount.cpp @@ -3091,7 +3091,7 @@ void CFRefCount::EvalObjCMessageExpr(ExplodedNodeSet<GRState>& Dst,        if (Expr* Receiver = ME->getReceiver()) {          SVal X = St->getSValAsScalarOrLoc(Receiver);          if (loc::MemRegionVal* L = dyn_cast<loc::MemRegionVal>(&X)) -          if (L->getRegion() == Eng.getStateManager().getSelfRegion(St)) { +          if (L->getRegion() == St->getSelfRegion()) {              // Update the summary to make the default argument effect              // 'StopTracking'.              Summ = Summaries.copySummary(Summ); diff --git a/clang/lib/Analysis/GRExprEngine.cpp b/clang/lib/Analysis/GRExprEngine.cpp index 42c6ce3dfb6..5ea9b29ddad 100644 --- a/clang/lib/Analysis/GRExprEngine.cpp +++ b/clang/lib/Analysis/GRExprEngine.cpp @@ -176,7 +176,7 @@ const GRState* GRExprEngine::getInitialState() {        const ParmVarDecl *PD = FD->getParamDecl(0);        QualType T = PD->getType();        if (T->isIntegerType()) -        if (const MemRegion *R = StateMgr.getRegion(PD)) { +        if (const MemRegion *R = state->getRegion(PD)) {            SVal V = state->getSVal(loc::MemRegionVal(R));            SVal Constraint = EvalBinOp(state, BinaryOperator::GT, V,                                        ValMgr.makeZeroVal(T), @@ -2253,7 +2253,7 @@ void GRExprEngine::VisitDeclStmt(DeclStmt* DS, NodeTy* Pred, NodeSet& Dst) {        // update the state based on the new binding.  If the GRTransferFunc        // object doesn't do anything, just auto-propagate the current state.        GRStmtNodeBuilderRef BuilderRef(Dst, *Builder, *this, *I, state, DS,true); -      getTF().EvalBind(BuilderRef, loc::MemRegionVal(StateMgr.getRegion(VD)), +      getTF().EvalBind(BuilderRef, loc::MemRegionVal(state->getRegion(VD)),                         InitVal);            }       else {  | 

