[cfe-commits] r71548 - in /cfe/trunk: include/clang/Analysis/PathSensitive/MemRegion.h include/clang/Analysis/PathSensitive/SVals.h include/clang/Analysis/PathSensitive/Store.h lib/Analysis/CFRefCount.cpp lib/Analysis/RegionStore.cpp lib/Analysis

Ted Kremenek kremenek at apple.com
Mon May 18 23:13:27 PDT 2009


On May 12, 2009, at 8:07 PM, Zhongxing Xu wrote:

> 2009/5/13 Ted Kremenek <kremenek at apple.com>:
>>
>> On May 12, 2009, at 9:56 AM, Ted Kremenek wrote:
>>
>>> On May 12, 2009, at 3:10 AM, Zhongxing Xu wrote:
>>>
>>>> +++ cfe/trunk/include/clang/Analysis/PathSensitive/Store.h Tue  
>>>> May 12
>>>> 05:10:00 2009
>>>> @@ -161,6 +161,11 @@
>>>>   return St;
>>>>  }
>>>>
>>>> +  virtual const GRState* setDefaultValue(const GRState* St,
>>>> +                                         const MemRegion* R,  
>>>> SVal V) {
>>>> +    return St;
>>>> +  }
>>>> +
>>>
>>> Hi Zhongxing,
>>>
>>> I noticed the addition of this method to StoreManager, but I don't  
>>> quite
>>> know what it does.  Could you add some comments?  I see it used  
>>> later, but I
>>> cannot quite evaluate the approach without a little more context.   
>>> Thanks!
>>>
>>> Ted
>>
>> I think I understand.  'setDefaultValue' installs a default value  
>> for a
>> MemRegion (e.g., representing an array) that will be used when no  
>> value is
>> available for a specific element of that region.  Is this the right
>> approach?  This basically assumes that all elements within that  
>> region have
>> the same value.
>>
>
> Now setDefaultValue sets a conjured symbolic value to the array
> region. When retrieving the element, we create a new SymbolRegionValue
> for that element region.
>
> The meaning of setting a conjured symbol is not that the whole array
> has the same symbolic region, but just mark that array to be
> 'symbolic'.

Got it.  Makes sense.





More information about the cfe-commits mailing list