]> granicus.if.org Git - clang/commitdiff
[analyzer] Rename CFRefCount's evalSummary method to evalCallOrMessage, since it...
authorJordy Rose <jediknil@belkadan.com>
Tue, 23 Aug 2011 00:03:01 +0000 (00:03 +0000)
committerJordy Rose <jediknil@belkadan.com>
Tue, 23 Aug 2011 00:03:01 +0000 (00:03 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138313 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Core/CFRefCount.cpp

index f71aba6bf886460ac9774b3141a745dc18659a67..4cb2950494776d304d72fcb43abe9b38097b9e1a 100644 (file)
@@ -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<const MemRegion*, 10> 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<BlockDataRegion>(L.getAsRegion())) {
-    Summ = Summaries.getPersistentStopSummary();
-  }
-  else if (const FunctionDecl *FD = L.getAsFunctionDecl()) {
-    Summ = Summaries.getSummary(FD);
-  }
-  else if (const CXXMemberCallExpr *me = dyn_cast<CXXMemberCallExpr>(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.