[clang] [analyzer] Implemented the DanglingPtrDeref checker to detect use-after-scope lifetime errors (PR #209278)

Balázs Benics via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 13 13:52:11 PDT 2026


================
@@ -0,0 +1,81 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.ReportDanglingPtrDeref \
+// RUN:   -analyzer-config cfg-lifetime=true -analyzer-output=text -verify %s
+
+void test_case_one() {
+  int *ptr = nullptr;
+  {
+    int num = 5;
+    ptr = #
+  }
+  *ptr = 6;
+  // expected-warning at -1 {{Use of 'num' after its lifetime ended}}
+  // expected-note at -2 {{Use of 'num' after its lifetime ended}}
+}
+
+void test_case_two() {
+  int *ptr_one = nullptr;
+  int *ptr_two = nullptr;
+  {
+    int n = 1;
+    int m = 2;
+    ptr_one = &n;
+    ptr_two = &m;
+  }
+  *ptr_one = 6;
+  *ptr_two = 7; 
+  // expected-warning at -2 {{Use of 'n' after its lifetime ended}}
+  // expected-warning at -2 {{Use of 'm' after its lifetime ended}}
+  // expected-note at -4 {{Use of 'n' after its lifetime ended}}
+  // expected-note at -4 {{Use of 'm' after its lifetime ended}}
----------------
steakhal wrote:

Could you align these - and in other cases where the notes repeat the warning?
Also, I think it's more readable if the warning is directly followed by its matching note.
```suggestion
  // expected-note at -4    {{Use of 'n' after its lifetime ended}}
  // expected-note at -4    {{Use of 'm' after its lifetime ended}}
```

https://github.com/llvm/llvm-project/pull/209278


More information about the cfe-commits mailing list