<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 5, 2008, at 6:28 PM, Zhongxing Xu wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style="">My either idea was to have regions encode minimal information that could be shared amongst different implementations of StoreManager.  I'm not really certain why you wish to add a VarDecl* "pointedBy" field into AnonTypedRegion?  I didn't get around to commenting this class, but AnonTypedRegion is meant to represent a typed chunk of memory; it doesn't have to be pointed by a VarDecl.   It also seems to me that you are using AnonTypedRegion exactly the way BasicStore uses VarRegion.  Isn't it the same thing?  The "Anon" means anonymous; it means there is no name associated with this region.<font color="#888888"></font></div> </blockquote><div><br>I use VarDecl* to differentiate AnonTypedRegions. For example, for <br><br>void foo(char* a, char* b) {...},  <br></div></div><br>'a' and 'b' both points to an AnonTypedRegion with type 'char', I just use the VarDecl's of 'a' and 'b' to differentiate these two regions. This is definitely not optimal design, because there might be AnonTypedRegion that are not pointed to by any variable. So it should be discussed. But one thing is sure: we need something to be associated with AnonTypedRegion besides its type and superregion.<br> </div></blockquote></div><br><div>I understand, but this particular use of AnonTypedRegions is exactly the same as VarRegion.  Why not just use VarRegion instead and save the extra QualType?  It also avoids putting the VarDecl* in AnonTypedRegion, since at that point the region is not anonymous.</div><div><br></div><div>It seems to me that RegionStoreManager doesn't need to use just one kind of region and one ImmutableMap.  For example, a map from VarDecl* -> VarRegion could be used for mappings from variables to regions, and then other maps could be used for other bindings.  For example, a (MemRegion*, FieldDecl*) -> FieldRegion could be used for field bindings.  A second set of mappings could then be used for region -> value bindings.  In your prototype implementation you have AnonTypedRegion* -> RVal, but one could also just have MemRegion* -> RVal.</div></body></html>