2009/5/11 Ted Kremenek <[email protected]>: > 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 <[email protected]> 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 >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
