OSDN Git Service

* config/cpu/cris/atomicity.h (__atomic_add): Remove "static
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Mar 2004 01:37:04 +0000 (01:37 +0000)
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Mar 2004 01:37:04 +0000 (01:37 +0000)
inline" and attribute-unused.  Qualify parameter __mem with
"volatile".
(__exchange_and_add): Ditto.  Add back memory clobber to asm.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79804 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 7012113..62c0534 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 965e0da..3162f6a 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