[cfe-commits] r70380 - in /cfe/trunk: lib/Analysis/RegionStore.cpp test/Analysis/null-deref-ps-region.c

Zhongxing Xu xuzhongxing at gmail.com
Wed Apr 29 02:24:47 PDT 2009


Author: zhongxingxu
Date: Wed Apr 29 04:24:35 2009
New Revision: 70380

URL: http://llvm.org/viewvc/llvm-project?rev=70380&view=rev
Log:
SymbolicRegions may also be live roots.

Added:
    cfe/trunk/test/Analysis/null-deref-ps-region.c
Modified:
    cfe/trunk/lib/Analysis/RegionStore.cpp

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

==============================================================================
--- cfe/trunk/lib/Analysis/RegionStore.cpp (original)
+++ cfe/trunk/lib/Analysis/RegionStore.cpp Wed Apr 29 04:24:35 2009
@@ -912,6 +912,10 @@
     if (const VarRegion* VR = dyn_cast<VarRegion>(R)) {
       if (SymReaper.isLive(Loc, VR->getDecl()))
         RegionRoots.push_back(VR); // This is a live "root".
+    } 
+    else if (const SymbolicRegion* SR = dyn_cast<SymbolicRegion>(R)) {
+      if (SymReaper.isLive(SR->getSymbol()))
+        RegionRoots.push_back(SR);
     }
     else {
       // Get the super region for R.

Added: cfe/trunk/test/Analysis/null-deref-ps-region.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/null-deref-ps-region.c?rev=70380&view=auto

==============================================================================
--- cfe/trunk/test/Analysis/null-deref-ps-region.c (added)
+++ cfe/trunk/test/Analysis/null-deref-ps-region.c Wed Apr 29 04:24:35 2009
@@ -0,0 +1,14 @@
+// RUN: clang-cc -analyze -std=gnu99 -checker-cfref -analyzer-store=region -verify %s
+
+
+// The store for 'a[1]' should not be removed mistakenly. SymbolicRegions may
+// also be live roots.
+void f14(int *a) {
+  int i;
+  a[1] = 1;
+  i = a[1];
+  if (i != 1) {
+    int *p = 0;
+    i = *p; // no-warning
+  }
+}





More information about the cfe-commits mailing list