atomicity.h (__atomic_add): Remove "static inline" and attribute-unused.
authorHans-Peter Nilsson <hp@axis.com>
Mon, 22 Mar 2004 01:37:04 +0000 (01:37 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Mon, 22 Mar 2004 01:37:04 +0000 (01:37 +0000)
* config/cpu/cris/atomicity.h (__atomic_add): Remove "static
inline" and attribute-unused.  Qualify parameter __mem with
"volatile".
(__exchange_and_add): Ditto.  Add back memory clobber to asm.

From-SVN: r79804

libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/cris/atomicity.h

index 7012113bc94d60ffc9c19f70f75fcca6aebac1f5..62c0534484bc0993549ed0ca9124221a18f739a3 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-22  Hans-Peter Nilsson  <hp@axis.com>
+
+       * config/cpu/cris/atomicity.h (__atomic_add): Remove "static
+       inline" and attribute-unused.  Qualify parameter __mem with
+       "volatile".
+       (__exchange_and_add): Ditto.  Add back memory clobber to asm.
+
 2004-03-20  Paolo Carlini  <pcarlini@suse.de>
 
        * testsuite/27_io/basic_istream/extractors_arithmetic/char/2.cc:
index 965e0da6ea01c6345a4bbd1e990ed0ab77077aa5..3162f6ada3b77c3d35a86a4843a95dd77683261a 100644 (file)
@@ -31,9 +31,8 @@
 
 namespace __gnu_cxx
 {
-  static inline _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(_Atomic_word* __mem, int __val)
+  _Atomic_word
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
   {
     int __tmp;
     _Atomic_word __result;
@@ -49,9 +48,12 @@ namespace __gnu_cxx
                        " bwf 0b                \n"
                        " clearf                \n"
                        :  "=&r" (__result), "=m" (*__mem), "=&r" (__tmp)
-                       : "r" (__mem), "g" (__val), "m" (*__mem));
+                       : "r" (__mem), "g" (__val), "m" (*__mem)
+                       /* The memory clobber must stay, regardless of
+                          current uses of this function.  */
+                       : "memory");
 #else
-    __asm__ __volatile__ (" move $ccr,$r9              \n"
+    __asm__ __volatile__ (" move $ccr,$r9      \n"
                        " di                    \n"
                        " move.d %4,%2          \n"
                        " move.d [%3],%0        \n"
@@ -60,14 +62,16 @@ namespace __gnu_cxx
                        " move $r9,$ccr         \n"
                        :  "=&r" (__result), "=m" (*__mem), "=&r" (__tmp)
                        : "r" (__mem), "g" (__val), "m" (*__mem)
-                       : "r9");
+                       : "r9",
+                         /* The memory clobber must stay, regardless of
+                            current uses of this function.  */
+                         "memory");
 #endif
 
     return __result;
   }
 
   void
-  __attribute__ ((__unused__))
-  __atomic_add(_Atomic_word* __mem, int __val)
+  __atomic_add(volatile _Atomic_word* __mem, int __val)
   { __exchange_and_add(__mem, __val); }
 } // namespace __gnu_cxx