On Tue, 3 Aug 2010 09:25:08 +0800, Zhongxing Xu <[email protected]>
wrote:
> On Tue, Aug 3, 2010 at 12:12 AM, Ted Kremenek <[email protected]>
wrote:
>> On Aug 1, 2010, at 9:56 PM, Zhongxing Xu <[email protected]> wrote:
>>
>>> +/// Represent a region's offset within the top level base region.
>>> +class RegionOffset {
>>> +  /// The base region.
>>> +  const MemRegion *R;
>>> +
>>> +  /// The bit offset within the base region. It shouldn't be
negative.
>>> +  uint64_t Offset;
>>
>> Why is the offset guaranteed to be non-negative?  Can't we construct
>> ElementRegions with a negative index?
>>
> 
> Because the offset is within the toplevel object region and used for
> representing region bindings, binding to a negative index is illegal.

Not if the top-level region is a symbolic region representing an argument
pointer. This is perfectly valid, if a little cringe-worthy:

void foo (const int *a) {
  int prev = a[-1];
}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to