[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)
https://github.com/haoNoQ approved this pull request. LGTM! https://github.com/llvm/llvm-project/pull/91875 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)
https://github.com/rniwa updated https://github.com/llvm/llvm-project/pull/91875 >From d5a676c1cbe6d9804e6b2d3582df3c4977684188 Mon Sep 17 00:00:00 2001 From: Ryosuke Niwa Date: Sat, 11 May 2024 16:59:27 -0700 Subject: [PATCH 1/2] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. --- clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 7 +++ clang/test/Analysis/Checkers/WebKit/call-args.cpp | 7 +++ 2 files changed, 14 insertions(+) diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index f81db0e67d835..423c2d749bcfb 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -28,6 +28,13 @@ bool tryToFindPtrOrigin( E = tempExpr->getSubExpr(); continue; } +if (auto *tempExpr = dyn_cast(E)) { + if (auto *C = tempExpr->getConstructor()) { +if (auto* Class = C->getParent(); Class && isRefCounted(Class)) + return callback(E, true); +break; + } +} if (auto *tempExpr = dyn_cast(E)) { E = tempExpr->getSubExpr(); continue; diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp b/clang/test/Analysis/Checkers/WebKit/call-args.cpp index e1bee8a23a250..94efddeaf66cd 100644 --- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp +++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp @@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref { // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and unsafe}} } } + +namespace call_with_explicit_temporary_obj { + void foo() { +Ref { *provide() }->method(); +RefPtr { provide() }->method(); + } +} >From 9b72796910a694c8c88435c43459bebfd1709e52 Mon Sep 17 00:00:00 2001 From: Ryosuke Niwa Date: Sat, 11 May 2024 17:01:42 -0700 Subject: [PATCH 2/2] Fix formatting. --- clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index 423c2d749bcfb..be07cf51eefb3 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -30,7 +30,7 @@ bool tryToFindPtrOrigin( } if (auto *tempExpr = dyn_cast(E)) { if (auto *C = tempExpr->getConstructor()) { -if (auto* Class = C->getParent(); Class && isRefCounted(Class)) +if (auto *Class = C->getParent(); Class && isRefCounted(Class)) return callback(E, true); break; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)
github-actions[bot] wrote: :warning: C/C++ code formatter, clang-format found issues in your code. :warning: You can test this locally with the following command: ``bash git-clang-format --diff 31774b6a8a88b435ce79f9ba048ef8bb00e2817e d5a676c1cbe6d9804e6b2d3582df3c4977684188 -- clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp clang/test/Analysis/Checkers/WebKit/call-args.cpp `` View the diff from clang-format here. ``diff diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index 423c2d749b..be07cf51ee 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -30,7 +30,7 @@ bool tryToFindPtrOrigin( } if (auto *tempExpr = dyn_cast(E)) { if (auto *C = tempExpr->getConstructor()) { -if (auto* Class = C->getParent(); Class && isRefCounted(Class)) +if (auto *Class = C->getParent(); Class && isRefCounted(Class)) return callback(E, true); break; } `` https://github.com/llvm/llvm-project/pull/91875 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)
llvmbot wrote: @llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-static-analyzer-1 Author: Ryosuke Niwa (rniwa) Changes --- Full diff: https://github.com/llvm/llvm-project/pull/91875.diff 2 Files Affected: - (modified) clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp (+7) - (modified) clang/test/Analysis/Checkers/WebKit/call-args.cpp (+7) ``diff diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index f81db0e67d835..423c2d749bcfb 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -28,6 +28,13 @@ bool tryToFindPtrOrigin( E = tempExpr->getSubExpr(); continue; } +if (auto *tempExpr = dyn_cast(E)) { + if (auto *C = tempExpr->getConstructor()) { +if (auto* Class = C->getParent(); Class && isRefCounted(Class)) + return callback(E, true); +break; + } +} if (auto *tempExpr = dyn_cast(E)) { E = tempExpr->getSubExpr(); continue; diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp b/clang/test/Analysis/Checkers/WebKit/call-args.cpp index e1bee8a23a250..94efddeaf66cd 100644 --- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp +++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp @@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref { // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and unsafe}} } } + +namespace call_with_explicit_temporary_obj { + void foo() { +Ref { *provide() }->method(); +RefPtr { provide() }->method(); + } +} `` https://github.com/llvm/llvm-project/pull/91875 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. (PR #91875)
https://github.com/rniwa created https://github.com/llvm/llvm-project/pull/91875 None >From d5a676c1cbe6d9804e6b2d3582df3c4977684188 Mon Sep 17 00:00:00 2001 From: Ryosuke Niwa Date: Sat, 11 May 2024 16:59:27 -0700 Subject: [PATCH] [alpha.webkit.UncountedCallArgsChecker] Allow explicit instantiation of Ref/RefPtr on call arguments. --- clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp | 7 +++ clang/test/Analysis/Checkers/WebKit/call-args.cpp | 7 +++ 2 files changed, 14 insertions(+) diff --git a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp index f81db0e67d835..423c2d749bcfb 100644 --- a/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/WebKit/ASTUtils.cpp @@ -28,6 +28,13 @@ bool tryToFindPtrOrigin( E = tempExpr->getSubExpr(); continue; } +if (auto *tempExpr = dyn_cast(E)) { + if (auto *C = tempExpr->getConstructor()) { +if (auto* Class = C->getParent(); Class && isRefCounted(Class)) + return callback(E, true); +break; + } +} if (auto *tempExpr = dyn_cast(E)) { E = tempExpr->getSubExpr(); continue; diff --git a/clang/test/Analysis/Checkers/WebKit/call-args.cpp b/clang/test/Analysis/Checkers/WebKit/call-args.cpp index e1bee8a23a250..94efddeaf66cd 100644 --- a/clang/test/Analysis/Checkers/WebKit/call-args.cpp +++ b/clang/test/Analysis/Checkers/WebKit/call-args.cpp @@ -358,3 +358,10 @@ namespace call_with_ptr_on_ref { // expected-warning@-1{{Call argument for parameter 'bad' is uncounted and unsafe}} } } + +namespace call_with_explicit_temporary_obj { + void foo() { +Ref { *provide() }->method(); +RefPtr { provide() }->method(); + } +} ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits