[cfe-commits] r82686 - in /cfe/trunk: lib/Analysis/RegionStore.cpp test/Analysis/misc-ps-region-store.m

Ted Kremenek kremenek at apple.com
Wed Sep 23 23:24:32 PDT 2009


Author: kremenek
Date: Thu Sep 24 01:24:32 2009
New Revision: 82686

URL: http://llvm.org/viewvc/llvm-project?rev=82686&view=rev
Log:
Fix crash in RegionStoreManager::Bind() by using 'getAs<PointerType>()' instead of 'cast<PointerType>()' (to handle pointer typedefs).

Modified:
    cfe/trunk/lib/Analysis/RegionStore.cpp
    cfe/trunk/test/Analysis/misc-ps-region-store.m

Modified: cfe/trunk/lib/Analysis/RegionStore.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/RegionStore.cpp?rev=82686&r1=82685&r2=82686&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/RegionStore.cpp (original)
+++ cfe/trunk/lib/Analysis/RegionStore.cpp Thu Sep 24 01:24:32 2009
@@ -1322,7 +1322,7 @@
     // Binding directly to a symbolic region should be treated as binding
     // to element 0.
     QualType T = SR->getSymbol()->getType(getContext());
-    T = cast<PointerType>(T)->getPointeeType();
+    T = T->getAs<PointerType>()->getPointeeType();
     R = GetElementZeroRegion(SR, T);
   }
 

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=82686&r1=82685&r2=82686&view=diff

==============================================================================
--- cfe/trunk/test/Analysis/misc-ps-region-store.m (original)
+++ cfe/trunk/test/Analysis/misc-ps-region-store.m Thu Sep 24 01:24:32 2009
@@ -198,7 +198,8 @@
 // <rdar://problem/7249340> - Allow binding of values to symbolic regions.
 // This test case shows how RegionStore tracks the value bound to 'x'
 // after the assignment.
-void rdar_7249340(int *x) {
+typedef int* ptr_rdar_7249340;
+void rdar_7249340(ptr_rdar_7249340 x) {
   *x = 1;
   if (*x)
     return;





More information about the cfe-commits mailing list