]> granicus.if.org Git - libatomic_ops/commitdiff
Fix asm constraint of compare_and_swap for clang-3.1/mips
authorIvan Maidanski <ivmai@mail.ru>
Tue, 12 Mar 2013 18:29:33 +0000 (22:29 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 13 Mar 2013 18:31:40 +0000 (22:31 +0400)
* src/atomic_ops/sysdeps/gcc/mips.h (AO_compare_and_swap): Use "+m"
asm constraint for *addr instead of "+R" (the letter is unsupported
by clang3.1 resulting in "invalid output constraint in asm" error).

src/atomic_ops/sysdeps/gcc/mips.h

index 10bb5715f098712099a277715aaf9ad07ed008d2..bf14a3895d12796e1b050a9bc4b3a94438cea7b0 100644 (file)
@@ -127,7 +127,7 @@ AO_test_and_set(volatile AO_TS_t *addr)
         "       beqz    %0, 1b      \n"
         "       li      %2, 1       \n"
         "2:                           "
-        : "=&r" (temp), "+R" (*addr), "+r" (was_equal)
+        : "=&r" (temp), "+m" (*addr), "+r" (was_equal)
         : "r" (new_val), "r" (old)
         : "memory");
     return was_equal;