]> granicus.if.org Git - libatomic_ops/commitdiff
Fix ARM double-CAS operands width (GCC/Clang)
authorIvan Maidanski <ivmai@mail.ru>
Sat, 17 Aug 2013 09:58:59 +0000 (13:58 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 18 Aug 2013 08:19:13 +0000 (12:19 +0400)
(Apply commit a81940c from 'master' branch.)

* src/atomic_ops/sysdeps/gcc/arm.h (AO_double_compare_and_swap): Swap
assembly code operands ("new_val" and "addr") to prevent
Clang3.3 warning about operand truncation.

Conflicts:

    src/atomic_ops/sysdeps/gcc/arm.h

src/atomic_ops/sysdeps/gcc/arm.h

index 1c5af93f49b4439177ca1ea3d1c95129ec123a3f..0aa5e7c97a7bedba5c98fb37293aa5ace798cbda 100644 (file)
@@ -295,9 +295,9 @@ AO_compare_and_swap(volatile AO_t *addr, AO_t old_val, AO_t new_val)
       if (tmp != old_val)
         break;
       __asm__ __volatile__(
-        "       strexd  %0, %2, %H2, [%3]\n" /* store new one if matched */
+        "       strexd  %0, %3, %H3, [%2]\n" /* store new one if matched */
         : "=&r"(result), "+m"(*addr)
-        : "r"(new_val), "r"(addr)
+        : "r" (addr), "r" (new_val)
         : "cc");
     } while (result);
     return !result;   /* if succeded, return 1 else 0 */