[PATCH] D55035: [analyzer] For OSObject, trust that functions starting with Get

George Karpenkov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 29 18:21:30 PST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL347945: [analyzer] For OSObject, trust that functions starting with Get (authored by george.karpenkov, committed by ).
Herald added a subscriber: llvm-commits.

Changed prior to commit:
  https://reviews.llvm.org/D55035?vs=175783&id=176014#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55035/new/

https://reviews.llvm.org/D55035

Files:
  cfe/trunk/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
  cfe/trunk/test/Analysis/osobject-retain-release.cpp


Index: cfe/trunk/test/Analysis/osobject-retain-release.cpp
===================================================================
--- cfe/trunk/test/Analysis/osobject-retain-release.cpp
+++ cfe/trunk/test/Analysis/osobject-retain-release.cpp
@@ -20,6 +20,9 @@
 
   static OSObject *generateObject(int);
 
+  static OSObject *getObject();
+  static OSObject *GetObject();
+
   static const OSMetaClass * const metaClass;
 };
 
@@ -55,6 +58,14 @@
   static OSObject *safeMetaCast(const OSObject *inst, const OSMetaClass *meta);
 };
 
+void check_get_object() {
+  OSObject::getObject();
+}
+
+void check_Get_object() {
+  OSObject::GetObject();
+}
+
 void check_custom_iterator_rule(OSArray *arr) {
   OSIterator *it = arr->getIterator();
   it->release();
Index: cfe/trunk/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
===================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
+++ cfe/trunk/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
@@ -241,7 +241,9 @@
 
         // All objects returned with functions *not* starting with
         // get, or iterators, are returned at +1.
-        if (!II->getName().startswith("get") || isOSIteratorSubclass(PD)) {
+        if ((!II->getName().startswith("get") &&
+             !II->getName().startswith("Get")) ||
+            isOSIteratorSubclass(PD)) {
           return getOSSummaryCreateRule(FD);
         } else {
           return getOSSummaryGetRule(FD);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55035.176014.patch
Type: text/x-patch
Size: 1479 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181130/54aea6cb/attachment.bin>


More information about the llvm-commits mailing list