[compiler-rt] r243241 - tsan: fix shift overflow

Dmitry Vyukov dvyukov at google.com
Sun Jul 26 00:45:27 PDT 2015


Author: dvyukov
Date: Sun Jul 26 02:45:26 2015
New Revision: 243241

URL: http://llvm.org/viewvc/llvm-project?rev=243241&view=rev
Log:
tsan: fix shift overflow

3<<30 fits into 32-bit unsigned, but does not fit into int.
Found by ubsan.


Modified:
    compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h

Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h?rev=243241&r1=243240&r2=243241&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_sync.h Sun Jul 26 02:45:26 2015
@@ -86,9 +86,9 @@ class MetaMap {
   void OnThreadIdle(ThreadState *thr);
 
  private:
-  static const u32 kFlagMask  = 3 << 30;
-  static const u32 kFlagBlock = 1 << 30;
-  static const u32 kFlagSync  = 2 << 30;
+  static const u32 kFlagMask  = 3u << 30;
+  static const u32 kFlagBlock = 1u << 30;
+  static const u32 kFlagSync  = 2u << 30;
   typedef DenseSlabAlloc<MBlock, 1<<16, 1<<12> BlockAlloc;
   typedef DenseSlabAlloc<SyncVar, 1<<16, 1<<10> SyncAlloc;
   BlockAlloc block_alloc_;





More information about the llvm-commits mailing list