]> granicus.if.org Git - clang/commitdiff
When processing "release", "retain", and "autorelease" messages return the
authorTed Kremenek <kremenek@apple.com>
Thu, 1 May 2008 04:02:04 +0000 (04:02 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 1 May 2008 04:02:04 +0000 (04:02 +0000)
lval passed as an argument.

Fix: Inverted diagnostic messages.

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

include/clang/Analysis/PathSensitive/GRExprEngine.h
lib/Analysis/CFRefCount.cpp

index 127726ac06c52e60ffbc089e5b4952db245d74e1..66531ab79abe476a882ca4a71420163fcb4ece59 100644 (file)
@@ -396,11 +396,17 @@ protected:
     return N == EntryNode ? CleanedState : N->getState();
   }
   
+public:
+  
+  // FIXME: Maybe make these accesible only within the StmtBuilder?
+  
   ValueState* SetRVal(ValueState* St, Expr* Ex, RVal V);
   
   ValueState* SetRVal(ValueState* St, const Expr* Ex, RVal V) {
     return SetRVal(St, const_cast<Expr*>(Ex), V);
   }
+  
+protected:
  
   ValueState* SetBlkExprRVal(ValueState* St, Expr* Ex, RVal V) {
     return StateMgr.SetRVal(St, Ex, V, true, false);
index b1936fd631f0abb5e7b896d5a5e0cc193c91b000..761182dac382934ebfd588fdbe66d310814a476a 100644 (file)
@@ -1050,7 +1050,7 @@ bool CFRefCount::EvalObjCMessageExprAux(ExplodedNodeSet<ValueState>& Dst,
   // Create a new state with the updated bindings.  
   ValueState StVals = *St;
   SetRefBindings(StVals, B);
-  St = StateMgr.getPersistentState(StVals);
+  St = Eng.SetRVal(StateMgr.getPersistentState(StVals), ME, V);
   
   // Create an error node if it exists.  
   if (hasErr)
@@ -1509,13 +1509,13 @@ std::pair<const char**,const char**> CFRefReport::getExtraDescriptiveText() {
   switch (TF.getLangOptions().getGCMode()) {
     default:
       assert(false);
+          
+    case LangOptions::GCOnly:
+      assert (TF.isGCEnabled());
+      return std::make_pair(&Msgs[0], &Msgs[0]+1);
       
     case LangOptions::NonGC:
       assert (!TF.isGCEnabled());
-      return std::make_pair(&Msgs[0], &Msgs[0]+1);
-    
-    case LangOptions::GCOnly:
-      assert (TF.isGCEnabled());
       return std::make_pair(&Msgs[1], &Msgs[1]+1);
     
     case LangOptions::HybridGC: