[clang] [Clang SA]: add support for mismatched ownership_returns+ownership_takes calls for custom allocation classes (PR #98941)
Balazs Benics via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 17 21:58:17 PDT 2024
================
@@ -1877,16 +1923,43 @@ static bool didPreviousFreeFail(ProgramStateRef State,
return false;
}
+static void printOwnershipTakesList(raw_ostream &os, CheckerContext &C,
+ const Expr *E) {
+ if (const CallExpr *CE = dyn_cast<CallExpr>(E)) {
+ const FunctionDecl *FD = CE->getDirectCallee();
+ if (!FD)
+ return;
+
+ if (!FD->hasAttrs())
+ return;
+
+ // Only one ownership_takes attribute is allowed
+ for (const auto *I : FD->specific_attrs<OwnershipAttr>()) {
+ OwnershipAttr::OwnershipKind OwnKind = I->getOwnKind();
+
+ if (OwnKind != OwnershipAttr::Takes)
----------------
steakhal wrote:
```suggestion
if (I->getOwnKind() != OwnershipAttr::Takes)
```
It seems like inlining this variable would make it more readable actually.
https://github.com/llvm/llvm-project/pull/98941
More information about the cfe-commits
mailing list