Hi Zhongxing, Similar to my comment for the other related change, what is the motivation for removing the use of StripCasts? I'm not saying the patch is wrong; I'd just like to see more of an explanation of why this is the right thing to do. I'd personally like to see a comment in the code explaining the logic so that the use of StripCasts() doesn't just get arbitrarily added back later. A test case (if one is relevant) would also be useful in understanding the motivation behind the change.
Thanks, Ted On Nov 26, 2010, at 1:14 AM, Zhongxing Xu <[email protected]> wrote: > Author: zhongxingxu > Date: Fri Nov 26 03:14:07 2010 > New Revision: 120178 > > URL: http://llvm.org/viewvc/llvm-project?rev=120178&view=rev > Log: > Do not use StripCasts() in this context. > > Modified: > cfe/trunk/lib/Checker/ArrayBoundChecker.cpp > > Modified: cfe/trunk/lib/Checker/ArrayBoundChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/ArrayBoundChecker.cpp?rev=120178&r1=120177&r2=120178&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/ArrayBoundChecker.cpp (original) > +++ cfe/trunk/lib/Checker/ArrayBoundChecker.cpp Fri Nov 26 03:14:07 2010 > @@ -44,8 +44,6 @@ > if (!R) > return; > > - R = R->StripCasts(); > - > const ElementRegion *ER = dyn_cast<ElementRegion>(R); > if (!ER) > return; > @@ -53,6 +51,11 @@ > // Get the index of the accessed element. > DefinedOrUnknownSVal Idx = cast<DefinedOrUnknownSVal>(ER->getIndex()); > > + // Zero index is always in bound, this also passes ElementRegions created > for > + // pointer casts. > + if (Idx.isZeroConstant()) > + return; > + > const GRState *state = C.getState(); > > // Get the size of the array. > > > _______________________________________________ > 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
