[cfe-commits] r63177 - /cfe/trunk/lib/Analysis/CFRefCount.cpp

Ted Kremenek kremenek at apple.com
Tue Jan 27 20:47:13 PST 2009


Author: kremenek
Date: Tue Jan 27 22:47:13 2009
New Revision: 63177

URL: http://llvm.org/viewvc/llvm-project?rev=63177&view=rev
Log:
Refactor some diagnostic code to use raw_string_ostream.  No functionality change.

Modified:
    cfe/trunk/lib/Analysis/CFRefCount.cpp

Modified: cfe/trunk/lib/Analysis/CFRefCount.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFRefCount.cpp?rev=63177&r1=63176&r2=63177&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/CFRefCount.cpp (original)
+++ cfe/trunk/lib/Analysis/CFRefCount.cpp Tue Jan 27 22:47:13 2009
@@ -2323,39 +2323,41 @@
   if (!CurrT)
     return NULL;  
   
-  const char* Msg = NULL;  
   const RefVal& CurrV = *CurrB.lookup(Sym);
 
   if (!PrevT) {
+    std::string sbuf;
+    llvm::raw_string_ostream os(sbuf);
     
     Stmt* S = cast<PostStmt>(N->getLocation()).getStmt();
 
     if (CurrV.isOwned()) {
 
-      if (isa<CallExpr>(S))
-        Msg = "Function call returns an object with a +1 retain count"
-              " (owning reference).";
+      if (isa<CallExpr>(S)) {
+        os <<  "Function call returns an object with a +1 retain count"
+                " (owning reference).";
+      }
       else {
         assert (isa<ObjCMessageExpr>(S));
-        Msg = "Method returns an object with a +1 retain count"
-              " (owning reference).";
+        os << "Method returns an object with a +1 retain count"
+                " (owning reference).";
       }
     }
     else {
       assert (CurrV.isNotOwned());
       
       if (isa<CallExpr>(S))
-        Msg = "Function call returns an object with a +0 retain count"
+        os << "Function call returns an object with a +0 retain count"
               " (non-owning reference).";
       else {
         assert (isa<ObjCMessageExpr>(S));
-        Msg = "Method returns an object with a +0 retain count"
+        os << "Method returns an object with a +0 retain count"
               " (non-owning reference).";
       }      
     }
     
     FullSourceLoc Pos(S->getLocStart(), BR.getContext().getSourceManager());
-    PathDiagnosticPiece* P = new PathDiagnosticPiece(Pos, Msg);
+    PathDiagnosticPiece* P = new PathDiagnosticPiece(Pos, os.str());
     
     if (Expr* Exp = dyn_cast<Expr>(S))
       P->addRange(Exp->getSourceRange());
@@ -2370,9 +2372,8 @@
     return NULL;
   
   // The typestate has changed.
-  
-  std::ostringstream os;
-  std::string s;
+  std::string sbuf;
+  llvm::raw_string_ostream os(sbuf);
   
   switch (CurrV.getKind()) {
     case RefVal::Owned:
@@ -2387,7 +2388,6 @@
         os << "Reference count incremented.";
       
       if (unsigned Count = CurrV.getCount()) {
-
         os << " Object has +" << Count;
         
         if (Count > 1)
@@ -2396,22 +2396,19 @@
           os << " retain count.";
       }
       
-      s = os.str();
-      Msg = s.c_str();
-      
       break;
       
     case RefVal::Released:
-      Msg = "Object released.";
+      os << "Object released.";
       break;
       
     case RefVal::ReturnedOwned:
-      Msg = "Object returned to caller as an owning reference (single retain "
+      os << "Object returned to caller as an owning reference (single retain "
             "count transferred to caller).";
       break;
       
     case RefVal::ReturnedNotOwned:
-      Msg = "Object returned to caller with a +0 (non-owning) retain count.";
+      os << "Object returned to caller with a +0 (non-owning) retain count.";
       break;
 
     default:
@@ -2420,7 +2417,7 @@
   
   Stmt* S = cast<PostStmt>(N->getLocation()).getStmt();    
   FullSourceLoc Pos(S->getLocStart(), BR.getContext().getSourceManager());
-  PathDiagnosticPiece* P = new PathDiagnosticPiece(Pos, Msg);
+  PathDiagnosticPiece* P = new PathDiagnosticPiece(Pos, os.str());
   
   // Add the range by scanning the children of the statement for any bindings
   // to Sym.





More information about the cfe-commits mailing list