Author: zaks
Date: Tue Apr 23 18:57:50 2013
New Revision: 180166

URL: http://llvm.org/viewvc/llvm-project?rev=180166&view=rev
Log:
[analyzer] Set the allocation site to be the uniqueing location for retain 
count checker leaks.

The uniqueing location is the location which is part of the hash used to 
determine if two reports are
the same. This is used by the CmpRuns.py script to compare two analyzer runs 
and determine which
warnings are new.

Modified:
    cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
    cfe/trunk/test/Analysis/plist-output-alternate.m
    cfe/trunk/test/Analysis/plist-output.m
    cfe/trunk/test/Analysis/retain-release-path-notes-gc.m
    cfe/trunk/test/Analysis/retain-release-path-notes.m

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=180166&r1=180165&r2=180166&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Tue Apr 23 
18:57:50 2013
@@ -2358,8 +2358,17 @@ CFRefLeakReport::CFRefLeakReport(CFRefBu
   else
     AllocStmt = P.castAs<PostStmt>().getStmt();
   assert(AllocStmt && "All allocations must come from explicit calls");
-  Location = PathDiagnosticLocation::createBegin(AllocStmt, SMgr,
-                                                  n->getLocationContext());
+
+  PathDiagnosticLocation AllocLocation =
+    PathDiagnosticLocation::createBegin(AllocStmt, SMgr,
+                                        AllocNode->getLocationContext());
+  Location = AllocLocation;
+
+  // Set uniqieing info, which will be used for unique the bug reports. The
+  // leaks should be uniqued on the allocation site.
+  UniqueingLocation = AllocLocation;
+  UniqueingDecl = AllocNode->getLocationContext()->getDecl();
+
   // Fill in the description of the bug.
   Description.clear();
   llvm::raw_string_ostream os(Description);

Modified: cfe/trunk/test/Analysis/plist-output-alternate.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/plist-output-alternate.m?rev=180166&r1=180165&r2=180166&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/plist-output-alternate.m (original)
+++ cfe/trunk/test/Analysis/plist-output-alternate.m Tue Apr 23 18:57:50 2013
@@ -1362,7 +1362,7 @@ void rdar8331641(int x) {
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>rdar8331641</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>58</integer>

Modified: cfe/trunk/test/Analysis/plist-output.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/plist-output.m?rev=180166&r1=180165&r2=180166&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/plist-output.m (original)
+++ cfe/trunk/test/Analysis/plist-output.m Tue Apr 23 18:57:50 2013
@@ -2141,7 +2141,7 @@ int testFoo(Foo *x) {
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C 
method</string>
 // CHECK-NEXT:   <key>issue_context</key><string>test2</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>88</integer>

Modified: cfe/trunk/test/Analysis/retain-release-path-notes-gc.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-path-notes-gc.m?rev=180166&r1=180165&r2=180166&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release-path-notes-gc.m (original)
+++ cfe/trunk/test/Analysis/retain-release-path-notes-gc.m Tue Apr 23 18:57:50 
2013
@@ -139,7 +139,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Call to function &apos;CFCreateSomething&apos; returns 
a Core Foundation object with a +1 retain count.  Core Foundation objects are 
not automatically garbage collected</string>
+// CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -202,7 +202,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
+// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:    </array>
 // CHECK-NEXT:    <key>description</key><string>Potential leak (when using 
garbage collection) of an object stored into &apos;leaked&apos;</string>
@@ -210,7 +210,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:    <key>type</key><string>Leak of object when using garbage 
collection</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>creationViaCFCreate</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>44</integer>
@@ -282,7 +282,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Call to function &apos;CFCreateSomething&apos; returns 
a Core Foundation object with a +1 retain count.  Core Foundation objects are 
not automatically garbage collected</string>
+// CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -357,7 +357,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Reference count incremented. The object now has a 
+2 retain count</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Reference count incremented. The object now has a +2 
retain count</string>
+// CHECK-NEXT:      <string>Reference count incremented. The object now has a 
+2 retain count</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -432,7 +432,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>In GC mode a call to &apos;CFMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. An object must have a 0 retain count to be garbage 
collected. After this call its retain count is +1</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>In GC mode a call to &apos;CFMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. An object must have a 0 retain count to be garbage 
collected. After this call its retain count is +1</string>
+// CHECK-NEXT:      <string>In GC mode a call to &apos;CFMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. An object must have a 0 retain count to be garbage 
collected. After this call its retain count is +1</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -507,7 +507,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>In GC mode a call to &apos;NSMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. Since it now has a 0 retain count the object can be 
automatically collected by the garbage collector</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>In GC mode a call to &apos;NSMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. Since it now has a 0 retain count the object can be 
automatically collected by the garbage collector</string>
+// CHECK-NEXT:      <string>In GC mode a call to &apos;NSMakeCollectable&apos; 
decrements an object&apos;s retain count and registers the object with the 
garbage collector. Since it now has a 0 retain count the object can be 
automatically collected by the garbage collector</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -582,7 +582,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Reference count incremented. The object now has a 
+1 retain count. The object is not eligible for garbage collection until the 
retain count reaches 0 again</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Reference count incremented. The object now has a +1 
retain count. The object is not eligible for garbage collection until the 
retain count reaches 0 again</string>
+// CHECK-NEXT:      <string>Reference count incremented. The object now has a 
+1 retain count. The object is not eligible for garbage collection until the 
retain count reaches 0 again</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -645,7 +645,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
+// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;leaked&apos; is not referenced later in this execution path and has a 
retain count of +1</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:    </array>
 // CHECK-NEXT:    <key>description</key><string>Potential leak (when using 
garbage collection) of an object stored into &apos;leaked&apos;</string>
@@ -653,7 +653,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:    <key>type</key><string>Leak of object when using garbage 
collection</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>makeCollectable</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>6</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>53</integer>
@@ -725,7 +725,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 
retain count</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Method returns an Objective-C object with a +0 retain 
count</string>
+// CHECK-NEXT:      <string>Method returns an Objective-C object with a +0 
retain count</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -800,7 +800,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>In GC mode the &apos;retain&apos; message has no 
effect</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>In GC mode the &apos;retain&apos; message has no 
effect</string>
+// CHECK-NEXT:      <string>In GC mode the &apos;retain&apos; message has no 
effect</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -875,7 +875,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>In GC mode the &apos;release&apos; message has no 
effect</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>In GC mode the &apos;release&apos; message has no 
effect</string>
+// CHECK-NEXT:      <string>In GC mode the &apos;release&apos; message has no 
effect</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -950,7 +950,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>In GC mode an &apos;autorelease&apos; has no 
effect</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>In GC mode an &apos;autorelease&apos; has no 
effect</string>
+// CHECK-NEXT:      <string>In GC mode an &apos;autorelease&apos; has no 
effect</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -1013,7 +1013,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Incorrect decrement of the reference count of an 
object that is not owned at this point by the caller</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Incorrect decrement of the reference count of an object 
that is not owned at this point by the caller</string>
+// CHECK-NEXT:      <string>Incorrect decrement of the reference count of an 
object that is not owned at this point by the caller</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:    </array>
 // CHECK-NEXT:    <key>description</key><string>Incorrect decrement of the 
reference count of an object that is not owned at this point by the 
caller</string>
@@ -1093,7 +1093,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Call to function &apos;CFCreateSomething&apos; returns 
a Core Foundation object with a +1 retain count.  Core Foundation objects are 
not automatically garbage collected</string>
+// CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -1168,7 +1168,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
+// CHECK-NEXT:      <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>event</string>
@@ -1197,7 +1197,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;getViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;getViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
+// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;getViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:    </array>
 // CHECK-NEXT:    <key>description</key><string>Potential leak (when using 
garbage collection) of an object stored into &apos;object&apos;</string>
@@ -1205,7 +1205,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:    <key>type</key><string>Leak of returned object when using 
garbage collection</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C 
method</string>
 // CHECK-NEXT:   <key>issue_context</key><string>getViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>67</integer>
@@ -1277,7 +1277,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Call to function &apos;CFCreateSomething&apos; returns 
a Core Foundation object with a +1 retain count.  Core Foundation objects are 
not automatically garbage collected</string>
+// CHECK-NEXT:      <string>Call to function &apos;CFCreateSomething&apos; 
returns a Core Foundation object with a +1 retain count.  Core Foundation 
objects are not automatically garbage collected</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>control</string>
@@ -1352,7 +1352,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
+// CHECK-NEXT:      <string>Object returned to caller as an owning reference 
(single retain count transferred to caller)</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:     <dict>
 // CHECK-NEXT:      <key>kind</key><string>event</string>
@@ -1381,7 +1381,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:      <key>extended_message</key>
 // CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;copyViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
 // CHECK-NEXT:      <key>message</key>
-// CHECK-NEXT: <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;copyViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
+// CHECK-NEXT:      <string>Object leaked: object allocated and stored into 
&apos;object&apos; and returned from method &apos;copyViolation&apos; is 
potentially leaked when using garbage collection.  Callers of this method do 
not expect a returned object with a +1 retain count since they expect the 
object to be managed by the garbage collector</string>
 // CHECK-NEXT:     </dict>
 // CHECK-NEXT:    </array>
 // CHECK-NEXT:    <key>description</key><string>Potential leak (when using 
garbage collection) of an object stored into &apos;object&apos;</string>
@@ -1389,7 +1389,7 @@ void retainReleaseIgnored () {
 // CHECK-NEXT:    <key>type</key><string>Leak of returned object when using 
garbage collection</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C 
method</string>
 // CHECK-NEXT:   <key>issue_context</key><string>copyViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>72</integer>

Modified: cfe/trunk/test/Analysis/retain-release-path-notes.m
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release-path-notes.m?rev=180166&r1=180165&r2=180166&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release-path-notes.m (original)
+++ cfe/trunk/test/Analysis/retain-release-path-notes.m Tue Apr 23 18:57:50 2013
@@ -378,7 +378,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>creationViaAlloc</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>47</integer>
@@ -521,7 +521,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>creationViaCFCreate</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>52</integer>
@@ -889,7 +889,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>acquisitionViaMethod</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>5</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>60</integer>
@@ -1107,7 +1107,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   
<key>issue_context</key><string>acquisitionViaProperty</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>66</integer>
@@ -1325,7 +1325,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   
<key>issue_context</key><string>acquisitionViaCFFunction</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>3</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>72</integer>
@@ -2565,7 +2565,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   
<key>issue_context</key><string>makeCollectableIgnored</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>4</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>104</integer>
@@ -2933,7 +2933,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>function</string>
 // CHECK-NEXT:   <key>issue_context</key><string>CFGetRuleViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>114</integer>
@@ -3669,7 +3669,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak of returned object</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C 
method</string>
 // CHECK-NEXT:   <key>issue_context</key><string>getViolation</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>2</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>1</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>135</integer>
@@ -5333,7 +5333,7 @@ static int Cond;
 // CHECK-NEXT:    <key>type</key><string>Leak</string>
 // CHECK-NEXT:   <key>issue_context_kind</key><string>Objective-C 
method</string>
 // CHECK-NEXT:   <key>issue_context</key><string>test</string>
-// CHECK-NEXT:   <key>issue_hash</key><string>13</string>
+// CHECK-NEXT:   <key>issue_hash</key><string>8</string>
 // CHECK-NEXT:   <key>location</key>
 // CHECK-NEXT:   <dict>
 // CHECK-NEXT:    <key>line</key><integer>236</integer>


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to