[PATCH] D35613: Add Support for Generic Reference Counting Annotations in RetainCountChecker

Devin Coughlin via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 19 07:31:58 PDT 2017


dcoughlin added a comment.

This looks pretty good. There are some minor comments in line.

One thing that is missing: tests for the new diagnostic text. Can you add new tests that specifically test for the new diagnostic text with // expected-warning {{ ... }}}. These should probably go in retain-release.m.



================
Comment at: include/clang/StaticAnalyzer/Checkers/ObjCRetainCount.h:150
+    /// Indicates that the tracked object is a generic C object.
+    GenericC
   };
----------------
I would suggest calling this just "Generalized" to avoid confusion with generics and because it might not be C (it could, for example, be C++).


================
Comment at: lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp:1343
     return RetEffect::MakeOwned(RetEffect::CF);
+  else if (hasRCAnnotation(D, "give"))
+    return RetEffect::MakeOwned(RetEffect::GenericC);
----------------
I would suggest having the annotation be "rc_ownership_returns_retained". This is consistent  with the CF and NS attribute names. I wouldn't be too concerned about this being verbose since users of the annotation in ISL will still use "__give".


================
Comment at: lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp:1368
       Template->addArg(AF, parm_idx, DecRefMsg);
-    else if (pd->hasAttr<CFConsumedAttr>())
+    else if (pd->hasAttr<CFConsumedAttr>() || hasRCAnnotation(pd, "take"))
       Template->addArg(AF, parm_idx, DecRef);
----------------
I would suggest having the annotation be "rc_ownership_consumed".


Repository:
  rL LLVM

https://reviews.llvm.org/D35613





More information about the cfe-commits mailing list