[clang] [analyzer] Support C++23 static operator calls (PR #84972)

via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 13 01:13:38 PDT 2024


================
@@ -0,0 +1,36 @@
+// RUN: %clang_analyze_cc1 -std=c++2b -verify %s \
+// RUN:   -analyzer-checker=core,debug.ExprInspection
+
+template <typename T> void clang_analyzer_dump(T);
+
+struct Adder {
+  int data;
+  static int operator()(int x, int y) {
+    clang_analyzer_dump(x); // expected-warning {{1}}
+    clang_analyzer_dump(y); // expected-warning {{2}}
+    return x + y;
+  }
+};
+
+void static_operator_call_inlines() {
+  Adder s{10};
+  clang_analyzer_dump(s(1, 2)); // expected-warning {{3}}
+}
+
+struct DataWithCtor {
+  int x;
+  int y;
+  DataWithCtor(int v) : x(v + 10), y(v + 20) {}
----------------
tomasz-kaminski-sonarsource wrote:

Could we also dump `this` this to confirm that it is param var regions for `operator[]` and we trigger copy elsion?

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


More information about the cfe-commits mailing list