From: Jordy Rose Date: Tue, 23 Aug 2011 00:03:01 +0000 (+0000) Subject: [analyzer] Rename CFRefCount's evalSummary method to evalCallOrMessage, since it... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6fa7dbeac72b5d29484a6e01cc4e9b68b49133a4;p=clang [analyzer] Rename CFRefCount's evalSummary method to evalCallOrMessage, since it no longer, uh, evaluates call summaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138313 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Core/CFRefCount.cpp b/lib/StaticAnalyzer/Core/CFRefCount.cpp index f71aba6bf8..4cb2950494 100644 --- a/lib/StaticAnalyzer/Core/CFRefCount.cpp +++ b/lib/StaticAnalyzer/Core/CFRefCount.cpp @@ -1676,15 +1676,11 @@ public: // Calls. - void evalSummary(ExplodedNodeSet &Dst, - ExprEngine& Eng, - StmtNodeBuilder& Builder, - const Expr *Ex, - const CallOrObjCMessage &callOrMsg, - InstanceReceiver Receiver, - const RetainSummary& Summ, - const MemRegion *Callee, - ExplodedNode *Pred, const ProgramState *state); + void evalCallOrMessage(ExplodedNodeSet &Dst, ExprEngine &Eng, + StmtNodeBuilder &Builder, + const CallOrObjCMessage &callOrMsg, + InstanceReceiver Receiver, const MemRegion *Callee, + ExplodedNode *Pred, const ProgramState *state); virtual void evalCall(ExplodedNodeSet &Dst, ExprEngine& Eng, @@ -2527,16 +2523,13 @@ struct ResetWhiteList { }; } -void CFRefCount::evalSummary(ExplodedNodeSet &Dst, - ExprEngine& Eng, - StmtNodeBuilder& Builder, - const Expr *Ex, - const CallOrObjCMessage &callOrMsg, - InstanceReceiver Receiver, - const RetainSummary& Summ, - const MemRegion *Callee, - ExplodedNode *Pred, - const ProgramState *state) { +void CFRefCount::evalCallOrMessage(ExplodedNodeSet &Dst, ExprEngine &Eng, + StmtNodeBuilder &Builder, + const CallOrObjCMessage &callOrMsg, + InstanceReceiver Receiver, + const MemRegion *Callee, + ExplodedNode *Pred, + const ProgramState *state) { SmallVector RegionsToInvalidate; @@ -2630,6 +2623,8 @@ void CFRefCount::evalSummary(ExplodedNodeSet &Dst, unsigned Count = Builder.getCurrentBlockCount(); StoreManager::InvalidatedSymbols IS; + const Expr *Ex = callOrMsg.getOriginExpr(); + // NOTE: Even if RegionsToInvalidate is empty, we must still invalidate // global variables. // NOTE: RetainReleaseChecker handles the actual invalidation of symbols. @@ -2651,31 +2646,9 @@ void CFRefCount::evalCall(ExplodedNodeSet &Dst, const CallExpr *CE, SVal L, ExplodedNode *Pred) { - RetainSummary *Summ = 0; - - // FIXME: Better support for blocks. For now we stop tracking anything - // that is passed to blocks. - // FIXME: Need to handle variables that are "captured" by the block. - if (dyn_cast_or_null(L.getAsRegion())) { - Summ = Summaries.getPersistentStopSummary(); - } - else if (const FunctionDecl *FD = L.getAsFunctionDecl()) { - Summ = Summaries.getSummary(FD); - } - else if (const CXXMemberCallExpr *me = dyn_cast(CE)) { - if (const CXXMethodDecl *MD = me->getMethodDecl()) - Summ = Summaries.getSummary(MD); - else - Summ = Summaries.getDefaultSummary(); - } - else - Summ = Summaries.getDefaultSummary(); - - assert(Summ); - evalSummary(Dst, Eng, Builder, CE, - CallOrObjCMessage(CE, Pred->getState()), - InstanceReceiver(), *Summ,L.getAsRegion(), - Pred, Pred->getState()); + evalCallOrMessage(Dst, Eng, Builder, CallOrObjCMessage(CE, Pred->getState()), + InstanceReceiver(), L.getAsRegion(), Pred, + Pred->getState()); } void CFRefCount::evalObjCMessage(ExplodedNodeSet &Dst, @@ -2684,16 +2657,10 @@ void CFRefCount::evalObjCMessage(ExplodedNodeSet &Dst, ObjCMessage msg, ExplodedNode *Pred, const ProgramState *state) { - RetainSummary *Summ = - msg.isInstanceMessage() - ? Summaries.getInstanceMethodSummary(msg, state,Pred->getLocationContext()) - : Summaries.getClassMethodSummary(msg); - - assert(Summ && "RetainSummary is null"); - evalSummary(Dst, Eng, Builder, msg.getOriginExpr(), - CallOrObjCMessage(msg, Pred->getState()), - InstanceReceiver(msg, Pred->getLocationContext()), *Summ, NULL, - Pred, state); + + evalCallOrMessage(Dst, Eng, Builder, CallOrObjCMessage(msg, Pred->getState()), + InstanceReceiver(msg, Pred->getLocationContext()), + /* Callee = */ 0, Pred, state); } // Return statements.