[compiler-rt] 07092ea - [asan] Fix GCC warning "left shift count >= width"

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 12 13:04:08 PST 2021


Author: Vitaly Buka
Date: 2021-11-12T13:04:00-08:00
New Revision: 07092ea6bd1370da5eb9e05cc2910039f5f08bbd

URL: https://github.com/llvm/llvm-project/commit/07092ea6bd1370da5eb9e05cc2910039f5f08bbd
DIFF: https://github.com/llvm/llvm-project/commit/07092ea6bd1370da5eb9e05cc2910039f5f08bbd.diff

LOG: [asan] Fix GCC warning "left shift count >= width"

Fixes PR52385

Added: 
    

Modified: 
    compiler-rt/lib/asan/asan_allocator.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/asan/asan_allocator.cpp b/compiler-rt/lib/asan/asan_allocator.cpp
index 6d7073710bd19..3fa36742060bd 100644
--- a/compiler-rt/lib/asan/asan_allocator.cpp
+++ b/compiler-rt/lib/asan/asan_allocator.cpp
@@ -102,19 +102,18 @@ class ChunkHeader {
 
  public:
   uptr UsedSize() const {
-    uptr R = user_requested_size_lo;
-    if (sizeof(uptr) > sizeof(user_requested_size_lo))
-      R += (uptr)user_requested_size_hi << (8 * sizeof(user_requested_size_lo));
-    return R;
+    static_assert(sizeof(user_requested_size_lo) == 4,
+                  "Expression below requires this");
+    return FIRST_32_SECOND_64(0, ((uptr)user_requested_size_hi << 32)) +
+           user_requested_size_lo;
   }
 
   void SetUsedSize(uptr size) {
     user_requested_size_lo = size;
-    if (sizeof(uptr) > sizeof(user_requested_size_lo)) {
-      size >>= (8 * sizeof(user_requested_size_lo));
-      user_requested_size_hi = size;
-      CHECK_EQ(user_requested_size_hi, size);
-    }
+    static_assert(sizeof(user_requested_size_lo) == 4,
+                  "Expression below requires this");
+    user_requested_size_hi = FIRST_32_SECOND_64(0, size >> 32);
+    CHECK_EQ(UsedSize(), size);
   }
 
   void SetAllocContext(u32 tid, u32 stack) {


        


More information about the llvm-commits mailing list