From: Ivan Maidanski Date: Tue, 12 Mar 2013 18:29:33 +0000 (+0400) Subject: Fix asm constraint of compare_and_swap for clang-3.1/mips X-Git-Tag: libatomic_ops-7_2e~13 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83be5947daf586924b54762415d0ca27e1a55942;p=libatomic_ops Fix asm constraint of compare_and_swap for clang-3.1/mips (Apply commit 3e4c369 from 'master' branch.) * 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). Conflicts: src/atomic_ops/sysdeps/gcc/mips.h --- diff --git a/src/atomic_ops/sysdeps/gcc/mips.h b/src/atomic_ops/sysdeps/gcc/mips.h index 527a347..e09a558 100644 --- a/src/atomic_ops/sysdeps/gcc/mips.h +++ b/src/atomic_ops/sysdeps/gcc/mips.h @@ -59,7 +59,7 @@ AO_compare_and_swap(volatile AO_t *addr, AO_t old, AO_t new_val) " 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;