]> granicus.if.org Git - libatomic_ops/commitdiff
Suppress compiler warning in atomic_ops_malloc
authorIvan Maidanski <ivmai@mail.ru>
Mon, 6 Feb 2012 04:44:33 +0000 (08:44 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 6 Feb 2012 13:45:01 +0000 (17:45 +0400)
* src/atomic_ops_malloc.c (msb): Change shift-by-32 expression to
work around a warning issued by clang compiler.

src/atomic_ops_malloc.c

index d4a0f21c51d43dbf0a1fb1196f991435fc322413..bb1e949462934b5ed7910e8eb4576a48bfcd7046 100644 (file)
@@ -235,11 +235,9 @@ int msb(size_t s)
   int result = 0;
   int v;
   if ((s & 0xff) != s) {
-    /* The following shift often generates warnings on 32-bit arch's    */
-    /* That's OK, because it will never be executed there.              */
-    /* Doing the shift only in a conditional expression suppresses the  */
-    /* warning with the modern compilers.                               */
-    if (sizeof(size_t) > 4 && (v = s >> 32) != 0)
+    /* The following is a tricky code ought to be equivalent to         */
+    /* "(v = s >> 32) != 0" but suppresses warnings on 32-bit arch's.   */
+    if (sizeof(size_t) > 4 && (v = s >> (sizeof(size_t) > 4 ? 32 : 0)) != 0)
       {
         s = v;
         result += 32;