[compiler-rt] [scudo] Add missing thread-safety analysis annotations. (PR #68072)

Clement Courbet via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 3 00:42:02 PDT 2023


https://github.com/legrosbuffle updated https://github.com/llvm/llvm-project/pull/68072

>From 91f057e3873fb53e9f24645c9fd9306555cdc5a4 Mon Sep 17 00:00:00 2001
From: Clement Courbet <courbet at google.com>
Date: Tue, 3 Oct 2023 09:23:59 +0200
Subject: [PATCH] [scudo] Add missing thread-safety analysis annotations.

This avoids new warnings from `-Wthread-safety` after https://github.com/llvm/llvm-project/pull/67776, see
https://github.com/llvm/llvm-project/pull/67795.

Note that this are not really useful since thread safety analysis is disabled anyway here:
llvm-project/compiler-rt/lib/scudo/standalone/tsd_exclusive.h:172
---
 compiler-rt/lib/scudo/standalone/tsd.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/compiler-rt/lib/scudo/standalone/tsd.h b/compiler-rt/lib/scudo/standalone/tsd.h
index f4fa545de5e0468..7d9095d1648eb01 100644
--- a/compiler-rt/lib/scudo/standalone/tsd.h
+++ b/compiler-rt/lib/scudo/standalone/tsd.h
@@ -53,7 +53,8 @@ template <class Allocator> struct alignas(SCUDO_CACHE_LINE_SIZE) TSD {
   inline void unlock() NO_THREAD_SAFETY_ANALYSIS { Mutex.unlock(); }
   inline uptr getPrecedence() { return atomic_load_relaxed(&Precedence); }
 
-  void commitBack(Allocator *Instance) ASSERT_CAPABILITY(Mutex) {
+  void commitBack(Allocator *Instance) ASSERT_CAPABILITY(Mutex)
+      REQUIRES(Mutex) {
     Instance->commitBack(this);
   }
 
@@ -66,11 +67,12 @@ template <class Allocator> struct alignas(SCUDO_CACHE_LINE_SIZE) TSD {
   // TODO(chiahungduan): Ideally, we want to do `Mutex.assertHeld` but acquiring
   // TSD doesn't always require holding the lock. Add this assertion while the
   // lock is always acquired.
-  typename Allocator::CacheT &getCache() ASSERT_CAPABILITY(Mutex) {
+  typename Allocator::CacheT &getCache() ASSERT_CAPABILITY(Mutex)
+      REQUIRES(Mutex) {
     return Cache;
   }
   typename Allocator::QuarantineCacheT &getQuarantineCache()
-      ASSERT_CAPABILITY(Mutex) {
+      ASSERT_CAPABILITY(Mutex) REQUIRES(Mutex) {
     return QuarantineCache;
   }
 



More information about the llvm-commits mailing list