[cfe-commits] r93146 - in /cfe/trunk: lib/Analysis/SVals.cpp test/Analysis/NSString-failed-cases.m test/Analysis/NSString.m

Zhongxing Xu xuzhongxing at gmail.com
Sun Jan 10 22:52:54 PST 2010


Author: zhongxingxu
Date: Mon Jan 11 00:52:53 2010
New Revision: 93146

URL: http://llvm.org/viewvc/llvm-project?rev=93146&view=rev
Log:
Enhance SVals::getAsRegion: get the region that is converted to an integer.
This with previous patch fixes a OSAtomic test case.

Modified:
    cfe/trunk/lib/Analysis/SVals.cpp
    cfe/trunk/test/Analysis/NSString-failed-cases.m
    cfe/trunk/test/Analysis/NSString.m

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

==============================================================================
--- cfe/trunk/lib/Analysis/SVals.cpp (original)
+++ cfe/trunk/lib/Analysis/SVals.cpp Mon Jan 11 00:52:53 2010
@@ -97,6 +97,10 @@
   if (const loc::MemRegionVal *X = dyn_cast<loc::MemRegionVal>(this))
     return X->getRegion();
 
+  if (const nonloc::LocAsInteger *X = dyn_cast<nonloc::LocAsInteger>(this)) {
+    return X->getLoc().getAsRegion();
+  }
+
   return 0;
 }
 

Modified: cfe/trunk/test/Analysis/NSString-failed-cases.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSString-failed-cases.m?rev=93146&r1=93145&r2=93146&view=diff

==============================================================================
--- cfe/trunk/test/Analysis/NSString-failed-cases.m (original)
+++ cfe/trunk/test/Analysis/NSString-failed-cases.m Mon Jan 11 00:52:53 2010
@@ -97,15 +97,6 @@
 //===----------------------------------------------------------------------===//
 
 // FIXME: THIS TEST CASE INCORRECTLY REPORTS A LEAK.
-void testOSCompareAndSwapXXBarrier_parameter(NSString **old) {
-  NSString *s = [[NSString alloc] init]; // no-warning
-  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
-    [s release];
-  else    
-    [*old release];
-}
-
-// FIXME: THIS TEST CASE INCORRECTLY REPORTS A LEAK.
 void testOSCompareAndSwapXXBarrier_parameter_no_direct_release(NSString **old) {
   NSString *s = [[NSString alloc] init]; // no-warning
   if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))

Modified: cfe/trunk/test/Analysis/NSString.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSString.m?rev=93146&r1=93145&r2=93146&view=diff

==============================================================================
--- cfe/trunk/test/Analysis/NSString.m (original)
+++ cfe/trunk/test/Analysis/NSString.m Mon Jan 11 00:52:53 2010
@@ -388,3 +388,11 @@
   }
 }
 @end
+
+void testOSCompareAndSwapXXBarrier_parameter(NSString **old) {
+  NSString *s = [[NSString alloc] init]; // no-warning
+  if (!COMPARE_SWAP_BARRIER((intptr_t) 0, (intptr_t) s, (intptr_t*) old))
+    [s release];
+  else    
+    [*old release];
+}





More information about the cfe-commits mailing list