]> granicus.if.org Git - clang/commitdiff
Tidy pretty-printing for SVals, using 'dump()' instead of 'printStdErr()', and implem...
authorTed Kremenek <kremenek@apple.com>
Mon, 13 Jul 2009 23:53:06 +0000 (23:53 +0000)
committerTed Kremenek <kremenek@apple.com>
Mon, 13 Jul 2009 23:53:06 +0000 (23:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75560 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/PathSensitive/SVals.h
lib/Analysis/BasicStore.cpp
lib/Analysis/GRState.cpp
lib/Analysis/MemRegion.cpp
lib/Analysis/RegionStore.cpp
lib/Analysis/SVals.cpp

index dd7c93639f75be8a987ab518a0820c79bba15b64..0a425482009dee66d46d717dcaf8617727ed9f90 100644 (file)
 #include "clang/Analysis/PathSensitive/SymbolManager.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/ADT/ImmutableList.h"
-  
+
+namespace llvm {
+  class raw_ostream;
+}
+
 //==------------------------------------------------------------------------==//
 //  Base SVal types.
 //==------------------------------------------------------------------------==//
@@ -113,8 +117,8 @@ public:
 
   const MemRegion *getAsRegion() const;
   
-  void print(llvm::raw_ostream& OS) const;
-  void printStdErr() const;
+  void dumpToStream(llvm::raw_ostream& OS) const;
+  void dump() const;
 
   // Iterators.
   class symbol_iterator {
@@ -171,7 +175,7 @@ protected:
   NonLoc(unsigned SubKind, const void* d) : SVal(d, false, SubKind) {}
   
 public:
-  void print(llvm::raw_ostream& Out) const;
+  void dumpToStream(llvm::raw_ostream& Out) const;
   
   // Implement isa<T> support.
   static inline bool classof(const SVal* V) {
@@ -185,7 +189,7 @@ protected:
   : SVal(const_cast<void*>(D), true, SubKind) {}
 
 public:
-  void print(llvm::raw_ostream& Out) const;
+  void dumpToStream(llvm::raw_ostream& Out) const;
 
   Loc(const Loc& X) : SVal(X.Data, true, X.getSubKind()) {}
   Loc& operator=(const Loc& X) { memcpy(this, &X, sizeof(Loc)); return *this; }
@@ -418,4 +422,11 @@ public:
 } // end clang::loc namespace
 } // end clang namespace  
 
+namespace llvm {
+static inline llvm::raw_ostream& operator<<(llvm::raw_ostream& os,
+                                            clang::SVal V) {
+  V.dumpToStream(os);
+  return os;
+}
+} // end llvm namespace
 #endif
index ba1ccf1f90035e810ffbc6323f221644019b55b0..f1f051f244c5773afd211b92c5be28ae9a195385 100644 (file)
@@ -611,8 +611,7 @@ void BasicStoreManager::print(Store store, llvm::raw_ostream& Out,
     else
       Out << nl;
     
-    Out << ' ' << I.getKey() << " : ";
-    I.getData().print(Out);
+    Out << ' ' << I.getKey() << " : " << I.getData();
   }
 }
 
index 54c0afbff33eea82d9639975aac042bc4dcbffa3..b849bea0b5933b881cbb01c47bf3eb8a6a3c4ef1 100644 (file)
@@ -168,8 +168,7 @@ void GRState::print(llvm::raw_ostream& Out, const char* nl,
     Out << " (" << (void*) I.getKey() << ") ";
     LangOptions LO; // FIXME.
     I.getKey()->printPretty(Out, 0, PrintingPolicy(LO));
-    Out << " : ";
-    I.getData().print(Out);
+    Out << " : " << I.getData();
   }
   
   // Print block-expression bindings.
@@ -186,8 +185,7 @@ void GRState::print(llvm::raw_ostream& Out, const char* nl,
     Out << " (" << (void*) I.getKey() << ") ";
     LangOptions LO; // FIXME.
     I.getKey()->printPretty(Out, 0, PrintingPolicy(LO));
-    Out << " : ";
-    I.getData().print(Out);
+    Out << " : " << I.getData();
   }
   
   Mgr->getConstraintManager().print(this, Out, nl, sep);
index 8a40e4ae52379871f4d42fbcfe40325c01ec9317..6a531b991795beea437e6c59c1efc056fcd86636 100644 (file)
@@ -178,7 +178,7 @@ void CompoundLiteralRegion::dumpToStream(llvm::raw_ostream& os) const {
 }
 
 void ElementRegion::dumpToStream(llvm::raw_ostream& os) const {
-  os << superRegion << '['; Index.print(os); os << ']';
+  os << superRegion << '[' << Index << ']';
 }
 
 void FieldRegion::dumpToStream(llvm::raw_ostream& os) const {
index 2999225a433275c97a7f86e333493fd5252bc6ce..c59d935c3d6342d032f25c959ff2c330757fb46f 100644 (file)
@@ -1438,8 +1438,6 @@ void RegionStoreManager::print(Store store, llvm::raw_ostream& OS,
   RegionBindingsTy B = GetRegionBindings(store);
   OS << "Store:" << nl;
   
-  for (RegionBindingsTy::iterator I = B.begin(), E = B.end(); I != E; ++I) {
-    OS << ' ' << I.getKey() << " : ";
-    I.getData().print(OS); OS << nl;
-  }
+  for (RegionBindingsTy::iterator I = B.begin(), E = B.end(); I != E; ++I)
+    OS << ' ' << I.getKey() << " : " << I.getData() << nl;
 }
index d711ce0a225e324a436fa2435b58ebf03efe3ef6..e5657ff6b614eb3aee073fa011835c171d137498 100644 (file)
@@ -239,98 +239,83 @@ SVal loc::ConcreteInt::EvalBinOp(BasicValueFactory& BasicVals,
 // Pretty-Printing.
 //===----------------------------------------------------------------------===//
 
-void SVal::printStdErr() const { print(llvm::errs()); }
+void SVal::dump() const { dumpToStream(llvm::errs()); }
 
-void SVal::print(llvm::raw_ostream& Out) const {
-
-  switch (getBaseKind()) {
-      
+void SVal::dumpToStream(llvm::raw_ostream& os) const {
+  switch (getBaseKind()) {      
     case UnknownKind:
-      Out << "Invalid"; break;
-      
+      os << "Invalid";
+      break;      
     case NonLocKind:
-      cast<NonLoc>(this)->print(Out); break;
-      
+      cast<NonLoc>(this)->dumpToStream(os);
+      break;      
     case LocKind:
-      cast<Loc>(this)->print(Out); break;
-      
+      cast<Loc>(this)->dumpToStream(os);
+      break;      
     case UndefinedKind:
-      Out << "Undefined"; break;
-      
+      os << "Undefined";
+      break;      
     default:
       assert (false && "Invalid SVal.");
   }
 }
 
-void NonLoc::print(llvm::raw_ostream& Out) const {
-
+void NonLoc::dumpToStream(llvm::raw_ostream& os) const {
   switch (getSubKind()) {  
-
     case nonloc::ConcreteIntKind:
-      Out << cast<nonloc::ConcreteInt>(this)->getValue().getZExtValue();
-
+      os << cast<nonloc::ConcreteInt>(this)->getValue().getZExtValue();
       if (cast<nonloc::ConcreteInt>(this)->getValue().isUnsigned())
-        Out << 'U';
-      
-      break;
-      
+        os << 'U';      
+      break;      
     case nonloc::SymbolValKind:
-      Out << '$' << cast<nonloc::SymbolVal>(this)->getSymbol();
-      break;
-     
+      os << '$' << cast<nonloc::SymbolVal>(this)->getSymbol();
+      break;     
     case nonloc::SymExprValKind: {
       const nonloc::SymExprVal& C = *cast<nonloc::SymExprVal>(this);
       const SymExpr *SE = C.getSymbolicExpression();
-      Out << SE;
+      os << SE;
       break;
-    }
-    
+    }    
     case nonloc::LocAsIntegerKind: {
       const nonloc::LocAsInteger& C = *cast<nonloc::LocAsInteger>(this);
-      C.getLoc().print(Out);
-      Out << " [as " << C.getNumBits() << " bit integer]";
+      os << C.getLoc() << " [as " << C.getNumBits() << " bit integer]";
       break;
     }
-      
     case nonloc::CompoundValKind: {
       const nonloc::CompoundVal& C = *cast<nonloc::CompoundVal>(this);
-      Out << " {";
+      os << " {";
       bool first = true;
       for (nonloc::CompoundVal::iterator I=C.begin(), E=C.end(); I!=E; ++I) {
-        if (first) { Out << ' '; first = false; }
-        else Out << ", ";
-        (*I).print(Out);
+        if (first) { 
+          os << ' '; first = false;
+        }
+        else
+          os << ", ";
+
+        (*I).dumpToStream(os);
       }
-      Out << " }";
+      os << " }";
       break;
-    }
-      
+    }      
     default:
       assert (false && "Pretty-printed not implemented for this NonLoc.");
       break;
   }
 }
 
-void Loc::print(llvm::raw_ostream& Out) const {
-  
+void Loc::dumpToStream(llvm::raw_ostream& os) const {  
   switch (getSubKind()) {        
-
     case loc::ConcreteIntKind:
-      Out << cast<loc::ConcreteInt>(this)->getValue().getZExtValue()
-          << " (Loc)";
-      break;
-      
+      os << cast<loc::ConcreteInt>(this)->getValue().getZExtValue() << " (Loc)";
+      break;      
     case loc::GotoLabelKind:
-      Out << "&&"
-          << cast<loc::GotoLabel>(this)->getLabel()->getID()->getName();
+      os << "&&" << cast<loc::GotoLabel>(this)->getLabel()->getID()->getName();
       break;
-
     case loc::MemRegionKind:
-      Out << '&' << cast<loc::MemRegionVal>(this)->getRegion()->getString();
-      break;
-      
+      os << '&' << cast<loc::MemRegionVal>(this)->getRegion()->getString();
+      break;      
     default:
-      assert (false && "Pretty-printing not implemented for this Loc.");
+      assert(false && "Pretty-printing not implemented for this Loc.");
       break;
   }
 }