When processing "release", "retain", and "autorelease" messages return the
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
diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp
index b1936fd..761182d 100644
--- a/lib/Analysis/CFRefCount.cpp
+++ b/lib/Analysis/CFRefCount.cpp
@@ -1050,7 +1050,7 @@
   // 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 @@
   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: