[clang] Thread Safety Analysis: Improved pointer handling (PR #127396)

Aaron Puchert via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 25 16:56:49 PST 2025


================
@@ -4944,6 +4949,14 @@ class Foo {
     (*datap2_)[0] = 0;    // expected-warning {{reading the value pointed to by 'datap2_' requires holding mutex 'mu_'}}
 
     data_();              // expected-warning {{reading variable 'data_' requires holding mutex 'mu_'}}
+
+    // Calls operator&, and does not take the address.
+    (void)&data_ao_;      // expected-warning {{reading variable 'data_ao_' requires holding mutex 'mu_'}}
+    (void)__builtin_addressof(data_ao_); // expected-warning {{passing variable 'data_ao_' by reference requires holding mutex 'mu_'}}
+    showData(&data_ao_);  // expected-warning {{reading variable 'data_ao_' requires holding mutex 'mu_'}}
+    (void)&data_;         // no warning
+    (void)datap2_;        // no warning
+    showData(&data_);     // expected-warning {{passing pointer to variable 'data_' requires holding mutex 'mu_'}}
----------------
aaronpuchert wrote:

This doesn't belong here, because we're not calling overloaded operators in these cases.

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


More information about the cfe-commits mailing list