[PATCH] D134941: [analyzer][NFC] Add tests for D132236
Tomasz KamiĆski via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 30 01:58:42 PDT 2022
tomasz-kaminski-sonarsource created this revision.
Herald added subscribers: manas, steakhal, ASDenysPetrov, dkrupp, donat.nagy, Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun.
Herald added a project: All.
tomasz-kaminski-sonarsource requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
D132236 <https://reviews.llvm.org/D132236> would have introduced regressions in the symbol lifetime
handling. However, the testsuite did not catch this, so here we have
some tests, which would have break if D132236 <https://reviews.llvm.org/D132236> had landed.
This patch addresses the comment https://reviews.llvm.org/D132236#3753238
Co-authored-by: Balazs Benics <balazs.benics at sonarsource.com>
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D134941
Files:
clang/test/Analysis/NewDeleteLeaks.cpp
clang/test/Analysis/symbol-reaper-lambda.cpp
Index: clang/test/Analysis/symbol-reaper-lambda.cpp
===================================================================
--- /dev/null
+++ clang/test/Analysis/symbol-reaper-lambda.cpp
@@ -0,0 +1,19 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
+// expected-no-diagnostics
+
+template <typename... Ts>
+void escape(Ts&...);
+struct Dummy {};
+
+int strange(Dummy param) {
+ Dummy local_pre_lambda;
+ int ref_captured = 0;
+
+ auto fn = [&] {
+ escape(param, local_pre_lambda);
+ return ref_captured; // no-warning: The value is not garbage.
+ };
+
+ int local_defined_after_lambda; // Unused, but necessary! Important that it's before the call.
+ return fn();
+}
\ No newline at end of file
Index: clang/test/Analysis/NewDeleteLeaks.cpp
===================================================================
--- clang/test/Analysis/NewDeleteLeaks.cpp
+++ clang/test/Analysis/NewDeleteLeaks.cpp
@@ -192,3 +192,26 @@
// expected-note at -1 {{Potential leak of memory pointed to by 'v'}}
} // namespace refkind_from_unoallocated_to_allocated
+
+namespace symbol_reaper_lifetime {
+struct Nested {
+ int buf[2];
+};
+struct Wrapping {
+ Nested data;
+};
+
+Nested allocateWrappingAndReturnNested() {
+ // expected-note at +1 {{Memory is allocated}}
+ Wrapping const* p = new Wrapping();
+ // expected-warning at +2 {{Potential leak of memory pointed to by 'p'}}
+ // expected-note at +1 {{Potential leak of memory pointed to by 'p'}}
+ return p->data;
+}
+
+void caller() {
+ // expected-note at +1 {{Calling 'allocateWrappingAndReturnNested'}}
+ Nested n = allocateWrappingAndReturnNested();
+ (void)n;
+} // no-warning: No potential memory leak here, because that's been already reported.
+} // namespace symbol_reaper_lifetime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134941.464183.patch
Type: text/x-patch
Size: 1754 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220930/b08544a2/attachment.bin>
More information about the cfe-commits
mailing list