]> granicus.if.org Git - clang/commitdiff
Update some doxygen comments to be more rich. Remove StoreManager::GetRegionSVal.
authorTed Kremenek <kremenek@apple.com>
Wed, 7 Jan 2009 22:56:17 +0000 (22:56 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 7 Jan 2009 22:56:17 +0000 (22:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61894 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Analysis/PathSensitive/GRState.h
include/clang/Analysis/PathSensitive/Store.h
lib/Analysis/BasicStore.cpp

index 27df2bbdb6729ed505958001142d219815423b11..59de60084d6fee6b0f6fba0399032e7804b7150f 100644 (file)
@@ -474,7 +474,7 @@ public:
   }
   
   SVal GetSVal(const GRState* state, const MemRegion* R) {
-    return StoreMgr->GetRegionSVal(state, R);
+    return StoreMgr->Retrieve(state, loc::MemRegionVal(R));
   }  
   
   const GRState* BindLoc(const GRState* St, Loc LV, SVal V) {
index be8ee458cb96d6cb3028c7409ee32f27cf4fecac..b43699e72bf98e3c604889eb3b1f69e321a89aa7 100644 (file)
@@ -47,18 +47,29 @@ protected:
 public:  
   virtual ~StoreManager() {}
   
-  /// Retrieve - Retrieves the value bound to specified location.  The optional
-  ///  QualType information provides a hint to the store indicating the expected
-  ///  type of the returned value.
-  virtual SVal Retrieve(const GRState* state, Loc LV, QualType T=QualType()) =0;  
-
-  /// GetRegionSVal - Retrieves  the value bound to the specified region.
-  SVal GetRegionSVal(const GRState* state, const MemRegion* R) {
-    return Retrieve(state, loc::MemRegionVal(R));
-  }
-
-  /// Bind value V to location L.
-  virtual const GRState* Bind(const GRState* St, Loc L, SVal V) = 0;
+  /// Return the value bound to specified location in a given state.
+  /// \param[in] state The analysis state.
+  /// \param[in] loc The symbolic memory location.
+  /// \param[in] T An optional type that provides a hint indicating the 
+  ///   expected type of the returned value.  This is used if the value is
+  ///   lazily computed.
+  /// \return The value bound to the location \c loc.
+  virtual SVal Retrieve(const GRState* state, Loc loc,
+                        QualType T = QualType()) = 0;  
+
+//  /// Retrieves the value bound to the specified region.
+//  SVal GetRegionSVal(const GRState* state, const MemRegion* R) {
+//    return Retrieve(state, loc::MemRegionVal(R));
+//  }
+
+  /// Return a state with the specified value bound to the given location.
+  /// \param[in] state The analysis state.
+  /// \param[in] loc The symbolic memory location.
+  /// \param[in] val The value to bind to location \c loc.
+  /// \return A pointer to a GRState object that contains the same bindings as 
+  ///   \c state with the addition of having the value specified by \c val bound
+  ///   to the location given for \c loc.
+  virtual const GRState* Bind(const GRState* state, Loc loc, SVal val) = 0;
 
   virtual Store Remove(Store St, Loc L) = 0;
   
index 9e469c0b5dcc9b253435112b9f65e8cc5de2a2f9..b223114a51d8096ab458f049bb7c55facabb9bf1 100644 (file)
@@ -37,7 +37,7 @@ public:
   
   ~BasicStoreManager() {}
 
-  SVal Retrieve(const GRState *state, Loc LV, QualType T);  
+  SVal Retrieve(const GRState *state, Loc loc, QualType T = QualType());  
 
   const GRState* Bind(const GRState* St, Loc L, SVal V) {
     Store store = St->getStore();
@@ -45,8 +45,8 @@ public:
     return StateMgr.MakeStateWithStore(St, store);
   }
 
-  Store BindInternal(Store St, Loc LV, SVal V);  
-  Store Remove(Store St, Loc LV);
+  Store BindInternal(Store St, Loc loc, SVal V);  
+  Store Remove(Store St, Loc loc);
   Store getInitialStore();
 
   // FIXME: Investigate what is using this. This method should be removed.
@@ -263,18 +263,18 @@ SVal BasicStoreManager::getLValueElement(const GRState* St, SVal Base,
     return UnknownVal();
 }
 
-SVal BasicStoreManager::Retrieve(const GRState* state, Loc LV, QualType T) {
+SVal BasicStoreManager::Retrieve(const GRState* state, Loc loc, QualType T) {
   
-  if (isa<UnknownVal>(LV))
+  if (isa<UnknownVal>(loc))
     return UnknownVal();
   
-  assert (!isa<UndefinedVal>(LV));
+  assert (!isa<UndefinedVal>(loc));
   
-  switch (LV.getSubKind()) {
+  switch (loc.getSubKind()) {
 
     case loc::MemRegionKind: {
       const VarRegion* R =
-        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(LV).getRegion());
+        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(loc).getRegion());
       
       if (!R)
         return UnknownVal();
@@ -294,7 +294,7 @@ SVal BasicStoreManager::Retrieve(const GRState* state, Loc LV, QualType T) {
       // invalidate their bindings).  Just return Undefined.
       return UndefinedVal();            
     case loc::FuncValKind:
-      return LV;
+      return loc;
       
     default:
       assert (false && "Invalid Loc.");
@@ -304,11 +304,11 @@ SVal BasicStoreManager::Retrieve(const GRState* state, Loc LV, QualType T) {
   return UnknownVal();
 }
   
-Store BasicStoreManager::BindInternal(Store store, Loc LV, SVal V) {    
-  switch (LV.getSubKind()) {      
+Store BasicStoreManager::BindInternal(Store store, Loc loc, SVal V) {    
+  switch (loc.getSubKind()) {      
     case loc::MemRegionKind: {
       const VarRegion* R =
-        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(LV).getRegion());
+        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(loc).getRegion());
       
       if (!R)
         return store;
@@ -324,11 +324,11 @@ Store BasicStoreManager::BindInternal(Store store, Loc LV, SVal V) {
   }
 }
 
-Store BasicStoreManager::Remove(Store store, Loc LV) {
-  switch (LV.getSubKind()) {
+Store BasicStoreManager::Remove(Store store, Loc loc) {
+  switch (loc.getSubKind()) {
     case loc::MemRegionKind: {
       const VarRegion* R =
-        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(LV).getRegion());
+        dyn_cast<VarRegion>(cast<loc::MemRegionVal>(loc).getRegion());
       
       if (!R)
         return store;
@@ -379,7 +379,7 @@ BasicStoreManager::RemoveDeadBindings(const GRState* state, Stmt* Loc,
           break;
         
         Marked.insert(R);
-        SVal X = GetRegionSVal(state, R);      
+        SVal X = Retrieve(state, loc::MemRegionVal(R));
     
         // FIXME: We need to handle symbols nested in region definitions.
         for (symbol_iterator SI=X.symbol_begin(), SE=X.symbol_end(); SI!=SE; ++SI)