diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2021-08-04 18:27:53 +0200 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2021-08-05 13:36:23 +0200 |
commit | c7a4ede3511692a58627a9eedb8518dcef6c9a97 (patch) | |
tree | 13e4ba62bc664a385a35d21644777f9f0805aacb | |
parent | 530ea28fefc4652823a187a149e8001cbf4af18f (diff) | |
download | llvm-c7a4ede3511692a58627a9eedb8518dcef6c9a97.tar.gz |
tsan: make IsMetaMem accept u32*
MemToMeta returns u32*, so it's reasonable for IsMetaMem
to accept u32* as well.
Changing the argument type just removes few type casts.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D107481
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_debugging.cpp | 2 | ||||
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_platform.h | 4 | ||||
-rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_rtl.cpp | 7 |
3 files changed, 6 insertions, 7 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_debugging.cpp b/compiler-rt/lib/tsan/rtl/tsan_debugging.cpp index d54814c6a0dc..8abbb380293f 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_debugging.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_debugging.cpp @@ -195,7 +195,7 @@ const char *__tsan_locate_address(uptr addr, char *name, uptr name_size, const char *region_kind = nullptr; if (name && name_size > 0) name[0] = 0; - if (IsMetaMem(addr)) { + if (IsMetaMem(reinterpret_cast<u32 *>(addr))) { region_kind = "meta shadow"; } else if (IsShadowMem(addr)) { region_kind = "shadow"; diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform.h b/compiler-rt/lib/tsan/rtl/tsan_platform.h index 8bd218e25fd6..8f784ac8cc75 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_platform.h +++ b/compiler-rt/lib/tsan/rtl/tsan_platform.h @@ -892,7 +892,8 @@ bool IsMetaMemImpl(uptr mem) { } ALWAYS_INLINE -bool IsMetaMem(uptr mem) { +bool IsMetaMem(const u32 *p) { + uptr mem = reinterpret_cast<uptr>(p); #if defined(__aarch64__) && !defined(__APPLE__) && !SANITIZER_GO switch (vmaSize) { case 39: return IsMetaMemImpl<Mapping39>(mem); @@ -926,7 +927,6 @@ bool IsMetaMem(uptr mem) { #endif } - template<typename Mapping> uptr MemToShadowImpl(uptr x) { DCHECK(IsAppMem(x)); diff --git a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp index 46abdead5971..9285f9283ebd 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp @@ -328,7 +328,7 @@ static void CheckShadowMapping() { if (p < beg || p >= end) continue; const uptr s = MemToShadow(p); - const uptr m = (uptr)MemToMeta(p); + u32 *const m = MemToMeta(p); VPrintf(3, " checking pointer %p: shadow=%p meta=%p\n", p, s, m); CHECK(IsAppMem(p)); CHECK(IsShadowMem(s)); @@ -338,10 +338,9 @@ static void CheckShadowMapping() { // Ensure that shadow and meta mappings are linear within a single // user range. Lots of code that processes memory ranges assumes it. const uptr prev_s = MemToShadow(prev); - const uptr prev_m = (uptr)MemToMeta(prev); + u32 *const prev_m = MemToMeta(prev); CHECK_EQ(s - prev_s, (p - prev) * kShadowMultiplier); - CHECK_EQ((m - prev_m) / kMetaShadowSize, - (p - prev) / kMetaShadowCell); + CHECK_EQ(m - prev_m, (p - prev) / kMetaShadowCell); } prev = p; } |