Author: Ryosuke Niwa Date: 2025-09-08T11:13:55-07:00 New Revision: 49f17515227d8eb8894c13957b642c4200507806
URL: https://github.com/llvm/llvm-project/commit/49f17515227d8eb8894c13957b642c4200507806 DIFF: https://github.com/llvm/llvm-project/commit/49f17515227d8eb8894c13957b642c4200507806.diff LOG: [alpha.webkit.UncheckedCallArgsChecker] Don't emit a warning for passing a temporary object as an argument. (#155033) Since a temporary object lives until the end of the statement, it's safe to pass such an object as a function argument without explicitly creating a CheckedRef/CheckedPtr in stack. Added: Modified: clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp clang/test/Analysis/Checkers/WebKit/unchecked-call-arg.cpp Removed: ################################################################################ diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index 478bd85177143..0d2294e1e9bb0 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -208,6 +208,8 @@ bool isASafeCallArg(const Expr *E) { return true; } } + if (isa<CXXTemporaryObjectExpr>(E)) + return true; // A temporary lives until the end of this statement. if (isConstOwnerPtrMemberExpr(E)) return true; diff --git a/clang/test/Analysis/Checkers/WebKit/unchecked-call-arg.cpp b/clang/test/Analysis/Checkers/WebKit/unchecked-call-arg.cpp index 8685978ebf1ac..b89a3246606ed 100644 --- a/clang/test/Analysis/Checkers/WebKit/unchecked-call-arg.cpp +++ b/clang/test/Analysis/Checkers/WebKit/unchecked-call-arg.cpp @@ -32,3 +32,8 @@ void foo() { provide()->doWork(); // expected-warning@-1{{Call argument for 'this' parameter is unchecked and unsafe}} } + +void doWorkWithObject(const CheckedObject&); +void bar() { + doWorkWithObject(CheckedObject()); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits