[clang] [clang][analyzer] Fix false positive of BlockInCriticalSectionChecker (PR #127049)

via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 13 19:29:44 PST 2025


================
@@ -0,0 +1,50 @@
+// RUN: %clang_analyze_cc1 \
+// RUN:   -analyzer-checker=unix.BlockInCriticalSection \
+// RUN:   -std=c++11 \
+// RUN:   -analyzer-output text \
+// RUN:   -verify %s
+
+// expected-no-diagnostics
+
+namespace std {
+  struct mutex {
+    void lock() {}
+    void unlock() {}
+  };
+  template<typename T>
+  struct lock_guard {
+    lock_guard<T>(std::mutex) {}
+    ~lock_guard<T>() {}
+  };
+  template<typename T>
+  struct unique_lock {
+    unique_lock<T>(std::mutex) {}
+    ~unique_lock<T>() {}
+  };
+  template<typename T>
+  struct not_real_lock {
+    not_real_lock<T>(std::mutex) {}
+  };
+  } // namespace std
----------------
flovent wrote:

I wrote this testcase base on this checker's original testcase,  these locks code is copied from original testcase directly, and I searched for `lock_guard` in directory `clang/test/Analysis`, it only appears in this checker's testcase, should I add these locks to system header simulator?

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


More information about the cfe-commits mailing list