[cfe-commits] r71431 - /cfe/trunk/lib/Analysis/CFRefCount.cpp

Zhongxing Xu xuzhongxing at gmail.com
Mon May 11 14:56:59 PDT 2009


2009/5/11 Ted Kremenek <kremenek at apple.com>:
> Why is this too general of an assumption?  For example, couldn't we be
> invalidating a field?

That patch was not appropriate. What I intended is to limit the case
to when the underlying region is of scalar type. We don't want to
invalidate the entire array when the underlying region is of array
type. Is this a reasonable assumption?

>
> On May 11, 2009, at 7:28 AM, Zhongxing Xu <xuzhongxing at gmail.com> wrote:
>
>> Author: zhongxingxu
>> Date: Mon May 11 09:28:14 2009
>> New Revision: 71431
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=71431&view=rev
>> Log:
>> TypedRegion is a too general assumption. Usually we only want to
>> invalidate
>> the VarRegion as a super region of an ElementRegion.
>>
>> Modified:
>>   cfe/trunk/lib/Analysis/CFRefCount.cpp
>>
>> Modified: cfe/trunk/lib/Analysis/CFRefCount.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CFRefCount.cpp?rev=71431&r1=71430&r2=71431&view=diff
>>
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Analysis/CFRefCount.cpp (original)
>> +++ cfe/trunk/lib/Analysis/CFRefCount.cpp Mon May 11 09:28:14 2009
>> @@ -2660,7 +2660,7 @@
>>        if (R) {
>>          // Are we dealing with an ElementRegion?  If the element type is
>>          // a basic integer type (e.g., char, int) and the underying
>> region
>> -          // is also typed then strip off the ElementRegion.
>> +          // is a variable region then strip off the ElementRegion.
>>          // FIXME: We really need to think about this for the general case
>>          //   as sometimes we are reasoning about arrays and other times
>>          //   about (char*), etc., is just a form of passing raw bytes.
>> @@ -2674,8 +2674,8 @@
>>            // still allowing us to do checker-specific logic (e.g.,
>>            // invalidating reference counts), probably via callbacks.
>>            if (ER->getElementType()->isIntegralType())
>> -              if (const TypedRegion *superReg =
>> -                  dyn_cast<TypedRegion>(ER->getSuperRegion()))
>> +              if (const VarRegion *superReg =
>> +                  dyn_cast<VarRegion>(ER->getSuperRegion()))
>>                R = superReg;
>>            // FIXME: What about layers of ElementRegions?
>>          }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>




More information about the cfe-commits mailing list