[compiler-rt] [TSan, NFC] Eliminate useless calculations in TSan (PR #145283)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 22 23:56:48 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: Kunqiu Chen (Camsyn)
<details>
<summary>Changes</summary>
Previously, TSan repeatedly calculated some values in some cases, and this change eliminates these duplicate calculations.
---
Full diff: https://github.com/llvm/llvm-project/pull/145283.diff
2 Files Affected:
- (modified) compiler-rt/lib/tsan/rtl/tsan_rtl.cpp (+1-3)
- (modified) compiler-rt/lib/tsan/rtl/tsan_sync.cpp (+8-5)
``````````diff
diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
index c83efec8eaca2..32a4ca10c34c5 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp
@@ -624,6 +624,7 @@ void MapShadow(uptr addr, uptr size) {
static uptr mapped_meta_end = 0;
uptr meta_begin = (uptr)MemToMeta(addr);
uptr meta_end = (uptr)MemToMeta(addr + size);
+ // Windows wants 64K alignment.
meta_begin = RoundDownTo(meta_begin, 64 << 10);
meta_end = RoundUpTo(meta_end, 64 << 10);
if (!data_mapped) {
@@ -634,9 +635,6 @@ void MapShadow(uptr addr, uptr size) {
Die();
} else {
// Mapping continuous heap.
- // Windows wants 64K alignment.
- meta_begin = RoundDownTo(meta_begin, 64 << 10);
- meta_end = RoundUpTo(meta_end, 64 << 10);
CHECK_GT(meta_end, mapped_meta_end);
if (meta_begin < mapped_meta_end)
meta_begin = mapped_meta_end;
diff --git a/compiler-rt/lib/tsan/rtl/tsan_sync.cpp b/compiler-rt/lib/tsan/rtl/tsan_sync.cpp
index 09d41780d188a..97335bc8ecf71 100644
--- a/compiler-rt/lib/tsan/rtl/tsan_sync.cpp
+++ b/compiler-rt/lib/tsan/rtl/tsan_sync.cpp
@@ -247,11 +247,14 @@ void MetaMap::MoveMemory(uptr src, uptr dst, uptr sz) {
CHECK_NE(src, dst);
CHECK_NE(sz, 0);
uptr diff = dst - src;
- u32 *src_meta = MemToMeta(src);
- u32 *dst_meta = MemToMeta(dst);
- u32 *src_meta_end = MemToMeta(src + sz);
- uptr inc = 1;
- if (dst > src) {
+ u32 *src_meta, *dst_meta, *src_meta_end;
+ uptr inc;
+ if (dst < src) {
+ src_meta = MemToMeta(src);
+ dst_meta = MemToMeta(dst);
+ src_meta_end = MemToMeta(src + sz);
+ inc = 1;
+ } else {
src_meta = MemToMeta(src + sz) - 1;
dst_meta = MemToMeta(dst + sz) - 1;
src_meta_end = MemToMeta(src) - 1;
``````````
</details>
https://github.com/llvm/llvm-project/pull/145283
More information about the llvm-commits
mailing list