Author: kremenek Date: Tue Jun 22 18:58:31 2010 New Revision: 106609 URL: http://llvm.org/viewvc/llvm-project?rev=106609&view=rev Log: Correctly construct an ElementRegion for alloca() + pointer arithmetic. Fixes analyzer crash reported in PR 7450.
Modified: cfe/trunk/lib/Checker/RegionStore.cpp cfe/trunk/test/Analysis/misc-ps-region-store.m Modified: cfe/trunk/lib/Checker/RegionStore.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/RegionStore.cpp?rev=106609&r1=106608&r2=106609&view=diff ============================================================================== --- cfe/trunk/lib/Checker/RegionStore.cpp (original) +++ cfe/trunk/lib/Checker/RegionStore.cpp Tue Jun 22 18:58:31 2010 @@ -883,8 +883,7 @@ } case MemRegion::AllocaRegionKind: { const AllocaRegion *AR = cast<AllocaRegion>(MR); - QualType T = getContext().CharTy; // Create an ElementRegion of bytes. - QualType EleTy = T->getAs<PointerType>()->getPointeeType(); + QualType EleTy = getContext().CharTy; // Create an ElementRegion of bytes. SVal ZeroIdx = ValMgr.makeZeroArrayIndex(); ER = MRMgr.getElementRegion(EleTy, ZeroIdx, AR, getContext()); break; Modified: cfe/trunk/test/Analysis/misc-ps-region-store.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/misc-ps-region-store.m?rev=106609&r1=106608&r2=106609&view=diff ============================================================================== --- cfe/trunk/test/Analysis/misc-ps-region-store.m (original) +++ cfe/trunk/test/Analysis/misc-ps-region-store.m Tue Jun 22 18:58:31 2010 @@ -1033,3 +1033,11 @@ return x; } +// PR 7450 - Handle pointer arithmetic with __builtin_alloca +void pr_7450_aux(void *x); +void pr_7450() { + void *p = __builtin_alloca(10); + // Don't crash when analyzing the following statement. + pr_7450_aux(p + 8); +} + _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits