From: Andrew Pinski Date: Mon, 2 Jun 2003 18:38:32 +0000 (+0000) Subject: re PR libstdc++/9815 (atomicity.h - fails to compile with -O3 -masm=intel) X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=159ca3a3a48450cdf80bf9131073cc1e6402edc4;p=platform%2Fupstream%2Fgcc.git re PR libstdc++/9815 (atomicity.h - fails to compile with -O3 -masm=intel) 2003-06-02 Andrew Pinski PR libstdc++/9815 * config/cpu/i386/atomicity.h (__exchange_and_add): add intel asm case to asm. * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise. (__atomic_add): likewise. From-SVN: r67343 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7e204bc..0848e64 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2003-06-02 Andrew Pinski + + PR libstdc++/9815 + * config/cpu/i386/atomicity.h (__exchange_and_add): add intel + asm case to asm. + * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise. + (__atomic_add): likewise. + 2003-06-02 Paolo Carlini * include/bits/sstream.tcc (pbackfail): Minor clean up and @@ -86,7 +94,8 @@ 2003-05-27 Jonathan Wakely - * include/std/std_istream.h, include/std/std_ostream.h: Typo in comment. + * include/std/std_istream.h, include/std/std_ostream.h: Typo in + comment. 2003-05-26 Benjamin Kosnik diff --git a/libstdc++-v3/config/cpu/i386/atomicity.h b/libstdc++-v3/config/cpu/i386/atomicity.h index ac9f770..d619dbb 100644 --- a/libstdc++-v3/config/cpu/i386/atomicity.h +++ b/libstdc++-v3/config/cpu/i386/atomicity.h @@ -51,7 +51,7 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val) /* obtain the atomic exchange/add spin lock */ do { - __asm__ __volatile__ ("xchgl %0,%1" + __asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}" : "+m" (__Atomicity_lock<0>::_S_atomicity_lock), "+r" (__tmp)); } while (__tmp); diff --git a/libstdc++-v3/config/cpu/i486/atomicity.h b/libstdc++-v3/config/cpu/i486/atomicity.h index 73dedf1..7c65fab 100644 --- a/libstdc++-v3/config/cpu/i486/atomicity.h +++ b/libstdc++-v3/config/cpu/i486/atomicity.h @@ -37,7 +37,7 @@ __attribute__ ((__unused__)) __exchange_and_add (volatile _Atomic_word *__mem, int __val) { register _Atomic_word __result; - __asm__ __volatile__ ("lock; xaddl %0,%1" + __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}" : "=r" (__result), "+m" (*__mem) : "0" (__val) : "memory"); @@ -48,7 +48,7 @@ static inline void __attribute__ ((__unused__)) __atomic_add (volatile _Atomic_word* __mem, int __val) { - __asm__ __volatile__ ("lock; addl %1,%0" + __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}" : "+m" (*__mem) : "ir" (__val) : "memory"); }