]> granicus.if.org Git - clang/commitdiff
analyzer, retain/release checker: Remove hack where objects passed in message to...
authorTed Kremenek <kremenek@apple.com>
Tue, 8 Feb 2011 22:54:26 +0000 (22:54 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 8 Feb 2011 22:54:26 +0000 (22:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125130 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Core/CFRefCount.cpp
test/Analysis/refcnt_naming.m

index 2790d545206521c1a0b77f6b1706675c54bc25a3..e1a272e46b807c77a764dd36139570a520682d51 100644 (file)
@@ -1385,24 +1385,6 @@ RetainSummaryManager::getInstanceMethodSummary(const ObjCMessage &msg,
   // FIXME: The receiver could be a reference to a class, meaning that
   //  we should use the class method.
   RetainSummary *Summ = getInstanceMethodSummary(msg, ID);
-
-  // Special-case: are we sending a mesage to "self"?
-  //  This is a hack.  When we have full-IP this should be removed.
-  if (isa<ObjCMethodDecl>(LC->getDecl()) && Receiver) {
-    if (const loc::MemRegionVal *L = dyn_cast<loc::MemRegionVal>(&receiverV)) {
-      // Get the region associated with 'self'.
-      if (const ImplicitParamDecl *SelfDecl = LC->getSelfDecl()) {
-        SVal SelfVal = state->getSVal(state->getRegion(SelfDecl, LC));
-        if (L->StripCasts() == SelfVal.getAsRegion()) {
-          // Update the summary to make the default argument effect
-          // 'StopTracking'.
-          Summ = copySummary(Summ);
-          Summ->setDefaultArgEffect(StopTracking);
-        }
-      }
-    }
-  }
-
   return Summ ? Summ : getDefaultSummary();
 }
 
index f30ae1065469a4cb60342fe2ebaa0f254750a59c..7299001051c865059112bdb14014a3c2ee955a9a 100644 (file)
@@ -30,7 +30,9 @@ typedef signed char BOOL;
 }
 - (NSURL *)myMethod:(NSString *)inString;
 - (NSURL *)getMethod:(NSString*)inString;
-- (void)addObject:(id)X;
+- (NSURL *)getMethod2:(NSString*)inString;
+- (void)addObject:(id) __attribute__((ns_consumed)) X;
+- (void)addObject2:(id) X;
 @end
 
 @implementation MyClass
@@ -48,6 +50,13 @@ typedef signed char BOOL;
   return url; // no-warning
 }
 
+- (NSURL *)getMethod2:(NSString *)inString
+{
+  NSURL *url = (NSURL *)CFURLCreateWithString(0, (CFStringRef)inString, 0); // expected-warning{{leak}}
+  [self addObject2:url];
+  return url;
+}
+
 void testNames(NamingTest* x) {
   [x copyPhoto]; // expected-warning{{leak}}
   [x mutableCopyPhoto]; // expected-warning{{leak}}
@@ -67,4 +76,10 @@ void testNames(NamingTest* x) {
   myObject = X;
 }
 
+- (void)addObject2:(id)X
+{
+  myObject = X;
+}
+
 @end
+