Skip to content

Conversation

@vitalybuka
Copy link
Collaborator

All valid values should fit into a byte.
This slightly reduce generated code on x86_64.

Created using spr 1.3.4
@vitalybuka vitalybuka added the skip-precommit-approval PR for CI feedback, not intended for review label Nov 5, 2024
@llvmbot
Copy link
Member

llvmbot commented Nov 5, 2024

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Vitaly Buka (vitalybuka)

Changes

All valid values should fit into a byte.
This slightly reduce generated code on x86_64.


Full diff: https://github.com/llvm/llvm-project/pull/115075.diff

1 Files Affected:

  • (modified) compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp (+3-1)
diff --git a/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp b/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp
index d12e0f596a7fb4..dd37e86ebd7583 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_interface_atomic.cpp
@@ -515,7 +515,9 @@ static morder to_morder(int mo) {
   // since we use __sync_ atomics for actual atomic operations,
   // we can safely ignore it as well. It also subtly affects semantics,
   // but we don't model the difference.
-  return static_cast<morder>(mo & 0x7fff);
+  morder res = static_cast<morder>(static_cast<u8>(mo));
+  DCHECK_LE(res, mo_seq_cst);
+  return res;
 }
 
 #  define ATOMIC_IMPL(func, mo, ...)                                  \

@vitalybuka vitalybuka merged commit 823625c into main Nov 5, 2024
9 of 10 checks passed
@vitalybuka vitalybuka deleted the users/vitalybuka/spr/nfctsan-simplify-morder-conversion branch November 5, 2024 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

compiler-rt:sanitizer compiler-rt:tsan Thread sanitizer compiler-rt skip-precommit-approval PR for CI feedback, not intended for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants