2004-02-27 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 20:56:46 +0000 (20:56 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 27 Feb 2004 20:56:46 +0000 (20:56 +0000)
* config/cpu/hppa/atomicity.h: Include c++config.h to get defines.

* src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx.

* config/os/irix/irix5.2/atomicity.h: Merge..
* config/os/irix/irix6.5/atomicity.h: Merge..
* config/os/irix/atomicity.h: ...into this.
* config/os/irix/atomic_word.h: New.
* configure.host: Set atomic_word_dir for irix.

* hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock.
* i386/atomicity.h: Same.
* m68k/atomicity.h: Same.
* sparc/atomicity.h: Same.

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

libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/hppa/atomicity.h
libstdc++-v3/config/cpu/i386/atomicity.h
libstdc++-v3/config/cpu/m68k/atomicity.h
libstdc++-v3/config/cpu/sparc/atomicity.h
libstdc++-v3/config/os/irix/atomic_word.h [moved from libstdc++-v3/config/os/irix/irix6.5/atomicity.h with 73% similarity]
libstdc++-v3/config/os/irix/atomicity.h [moved from libstdc++-v3/config/os/irix/irix5.2/atomicity.h with 77% similarity]
libstdc++-v3/configure.host
libstdc++-v3/src/misc-inst.cc

index a99ccea..c6fe7ae 100644 (file)
@@ -1,7 +1,24 @@
+2004-02-27  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * config/cpu/hppa/atomicity.h: Include c++config.h to get defines.
+
+       * src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx.
+
+       * config/os/irix/irix5.2/atomicity.h: Merge..
+       * config/os/irix/irix6.5/atomicity.h: Merge..
+       * config/os/irix/atomicity.h: ...into this.
+       * config/os/irix/atomic_word.h: New.
+       * configure.host: Set atomic_word_dir for irix.
+
+       * hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock.
+       * i386/atomicity.h: Same.
+       * m68k/atomicity.h: Same.
+       * sparc/atomicity.h: Same.
+
 2004-02-27  David Edelsohn  <edelsohn@gnu.org>
 
        * config/os/aix/atomicity.h: Use __gnu_cxx namespace. Remove
-       static, and inline keyworks.
+       static, and inline keywords.
 
 2004-02-27  Paolo Carlini  <pcarlini@suse.de>
 
@@ -74,7 +91,7 @@
        (ios_base::Init::~Init): Same.
        * src/locale.cc (locale::id::_M_id): Same.
        * config/cpu/i486/atomicity.h: Use __gnu_cxx namespace. Remove
-       static, and inline keyworks.
+       static, and inline keywords.
        * config/cpu/alpha/atomicity.h: Same.
        * config/cpu/cris/atomicity.h: Same.
        * config/cpu/generic/atomicity.h: Same.
index 4e0c252..2b1ce90 100644 (file)
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
 
+#include <bits/c++config.h>
 #include <bits/atomicity.h>
 
 namespace __gnu_cxx
 {
-  template<int __inst>
-    struct __Atomicity_lock
+  template<int _Inst>
+    struct _Atomicity_lock
     {
       static volatile int _S_atomicity_lock;
     };
   
-  template<int __inst>
+  template<int _Inst>
   volatile int
-  __Atomicity_lock<__inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1;
+  _Atomicity_lock<_Inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1;
 
-  /* Because of the lack of weak support when using the hpux
-     som linker, we explicitly instantiate the atomicity lock
-     in src/misc-inst.cc when _GLIBCXX_INST_ATOMICITY_LOCK
-     is defined.  */
+  // Because of the lack of weak support when using the hpux som
+  // linker, we explicitly instantiate the atomicity lock in
+  // src/misc-inst.cc when _GLIBCXX_INST_ATOMICITY_LOCK is defined.
 #ifndef _GLIBCXX_INST_ATOMICITY_LOCK
-  template volatile int __Atomicity_lock<0>::_S_atomicity_lock;
+  template volatile int _Atomicity_lock<0>::_S_atomicity_lock;
 #endif
 
   int
@@ -55,7 +55,7 @@ namespace __gnu_cxx
   {
     _Atomic_word result;
     int tmp;
-    volatile int& lock = __Atomicity_lock<0>::_S_atomicity_lock;
+    volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock;
     
     __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
                          "cmpib,<>,n 0,%0,.+20\n\t"
@@ -79,7 +79,7 @@ namespace __gnu_cxx
   __atomic_add(_Atomic_word* __mem, int __val)
   {
     int tmp;
-    volatile int& lock = __Atomicity_lock<0>::_S_atomicity_lock;
+    volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock;
     
     __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
                          "cmpib,<>,n 0,%0,.+20\n\t"
index 968bd24..92c03d5 100644 (file)
 namespace __gnu_cxx
 {
   template<int __inst>
-    struct __Atomicity_lock
+    struct _Atomicity_lock
     {
       static volatile _Atomic_word _S_atomicity_lock;
     };
 
   template<int __inst>
-  volatile _Atomic_word __Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+  volatile _Atomic_word _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
 
-  template volatile _Atomic_word __Atomicity_lock<0>::_S_atomicity_lock;
+  template volatile _Atomic_word _Atomicity_lock<0>::_S_atomicity_lock;
   
   _Atomic_word 
   __attribute__ ((__unused__))
@@ -52,9 +52,9 @@ namespace __gnu_cxx
     do 
       {
        __asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}"
-                             : "=m" (__Atomicity_lock<0>::_S_atomicity_lock),
+                             : "=m" (_Atomicity_lock<0>::_S_atomicity_lock),
                              "+r" (__tmp)
-                             : "m" (__Atomicity_lock<0>::_S_atomicity_lock));
+                             : "m" (_Atomicity_lock<0>::_S_atomicity_lock));
       } 
     while (__tmp);
     
@@ -62,7 +62,7 @@ namespace __gnu_cxx
     *__mem += __val;
     
     // Release spin lock.
-    __Atomicity_lock<0>::_S_atomicity_lock = 0;
+    _Atomicity_lock<0>::_S_atomicity_lock = 0;
     
     return __result;
   }
index b582732..0e58f3c 100644 (file)
@@ -72,15 +72,15 @@ namespace __gnu_cxx
 #else
   
   template<int __inst>
-    struct __Atomicity_lock
+    struct _Atomicity_lock
     {
       static volatile unsigned char _S_atomicity_lock;
     };
 
   template<int __inst>
-  volatile unsigned char __Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+  volatile unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
   
-  template volatile unsigned char __Atomicity_lock<0>::_S_atomicity_lock;
+  template volatile unsigned char _Atomicity_lock<0>::_S_atomicity_lock;
   
   _Atomic_word 
   __attribute__ ((__unused__))
@@ -92,13 +92,13 @@ namespace __gnu_cxx
 #if defined(__mcf5200__) || defined(__mcf5300__)
     __asm__ __volatile__("1: bset.b #7,%0@\n\tjbne 1b"
                         : /* no outputs */
-                        : "a"(&__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "a"(&_Atomicity_lock<0>::_S_atomicity_lock)
                         : "cc", "memory");
     
     // CPU32 and MCF5400 support test-and-set (SMP-safe).
 #elif defined(__mcpu32__) || defined(__mcf5400__)
     __asm__ __volatile__("1: tas %0\n\tjbne 1b"
-                        : "+m"(__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "+m"(_Atomicity_lock<0>::_S_atomicity_lock)
                         : /* none */
                         : "cc");
     
@@ -107,7 +107,7 @@ namespace __gnu_cxx
     // memory controllers.
 #else
     __asm__ __volatile__("1: bset.b #7,%0\n\tjbne 1b"
-                        : "+m"(__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "+m"(_Atomicity_lock<0>::_S_atomicity_lock)
                         : /* none */
                         : "cc");
 #endif
@@ -115,7 +115,7 @@ namespace __gnu_cxx
     __result = *__mem;
     *__mem = __result + __val;
     
-    __Atomicity_lock<0>::_S_atomicity_lock = 0;
+    _Atomicity_lock<0>::_S_atomicity_lock = 0;
     
     return __result;
   }
index 6d4b19b..a39153b 100644 (file)
@@ -70,15 +70,15 @@ namespace __gnu_cxx
 #else /* __arch32__ */
 
   template<int __inst>
-    struct __Atomicity_lock
+    struct _Atomicity_lock
     {
       static unsigned char _S_atomicity_lock;
     };
 
   template<int __inst>
-  unsigned char __Atomicity_lock<__inst>::_S_atomicity_lock = 0;
+  unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
   
-  template unsigned char __Atomicity_lock<0>::_S_atomicity_lock;
+  template unsigned char _Atomicity_lock<0>::_S_atomicity_lock;
   
   _Atomic_word
   __attribute__ ((__unused__))
@@ -91,13 +91,13 @@ namespace __gnu_cxx
                         "      bne     1b\n\t"
                         "       nop"
                         : "=&r" (__tmp)
-                        : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
                         : "memory");
     __result = *__mem;
     *__mem += __val;
     __asm__ __volatile__("stb  %%g0, [%0]"
                         : /* no outputs */
-                        : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
                         : "memory");
     return __result;
   }
@@ -113,12 +113,12 @@ namespace __gnu_cxx
                         "      bne     1b\n\t"
                         "       nop"
                         : "=&r" (__tmp)
-                        : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
                         : "memory");
     *__mem += __val;
     __asm__ __volatile__("stb  %%g0, [%0]"
                         : /* no outputs */
-                        : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
+                        : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
                         : "memory");
   }  
 #endif /* __arch32__ */
similarity index 73%
rename from libstdc++-v3/config/os/irix/irix6.5/atomicity.h
rename to libstdc++-v3/config/os/irix/atomic_word.h
index c7f5c83..68b8101 100644 (file)
@@ -1,6 +1,6 @@
-// Low-level functions for atomic operations: IRIX version  -*- C++ -*-
+// Low-level type for atomic operations -*- C++ -*-
 
-// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 2004 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
 
-#ifndef _BITS_ATOMICITY_H
-#define _BITS_ATOMICITY_H      1
-
-#include <mutex.h>
+#ifndef _GLIBCXX_ATOMIC_WORD_H
+#define _GLIBCXX_ATOMIC_WORD_H 1
 
 typedef long _Atomic_word;
 
-static inline _Atomic_word
-__exchange_and_add (_Atomic_word* __mem, int __val)
-{
-  return (_Atomic_word) test_then_add ((unsigned long*) __mem, __val);
-}
-
-
-static inline void
-__atomic_add (_Atomic_word* __mem, int __val)
-{
-  __exchange_and_add (__mem, __val);
-}
-
-#endif /* atomicity.h */
+#endif 
similarity index 77%
rename from libstdc++-v3/config/os/irix/irix5.2/atomicity.h
rename to libstdc++-v3/config/os/irix/atomicity.h
index bac483e..83e9e02 100644 (file)
@@ -1,6 +1,6 @@
 // Low-level functions for atomic operations: IRIX version  -*- C++ -*-
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
 
-#ifndef _BITS_ATOMICITY_H
-#define _BITS_ATOMICITY_H      1
-
 #include <mutex.h>
+#include <bits/atomicity.h>
 
-typedef long _Atomic_word;
-
-static inline _Atomic_word
-__exchange_and_add (_Atomic_word* __mem, int __val)
-{
-  return (_Atomic_word) test_then_add ((unsigned long*) __mem, __val);
-}
-
-
-static inline void
-__atomic_add (_Atomic_word* __mem, int __val)
+namespace __gnu_cxx
 {
-  __exchange_and_add (__mem, __val);
-}
-
-#endif /* atomicity.h */
+  _Atomic_word
+  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
+  { return (_Atomic_word) test_then_add((unsigned long*) const_cast<_Atomic_word*>(__mem), __val); }
+
+  void
+  __atomic_add(volatile _Atomic_word* __mem, int __val)
+  { __exchange_and_add(__mem, __val); }
+} // namespace __gnu_cxx
index f6492b2..747cf74 100644 (file)
@@ -170,11 +170,13 @@ case "${host_os}" in
   irix[1-6] | irix[1-5].* | irix6.[0-4]*)
     # This is known to work on at least IRIX 5.2 and 6.3.
     os_include_dir="os/irix/irix5.2"
-    atomicity_dir=$os_include_dir
+    atomicity_dir=os/irix
+    atomic_word_dir=os/irix
     ;;
   irix6.5*)
     os_include_dir="os/irix/irix6.5"
-    atomicity_dir=$os_include_dir
+    atomicity_dir=os/irix
+    atomic_word_dir=os/irix
     ;;
   mingw32*)
     os_include_dir="os/mingw32"
index 37a4d3d..c449652 100644 (file)
@@ -1,6 +1,6 @@
 // Explicit instantiation file.
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 
 namespace std
 {
-#ifdef _GLIBCXX_INST_ATOMICITY_LOCK
-  template volatile int __Atomicity_lock<0>::_S_atomicity_lock;
-#endif
-
   // string related to iostreams
   template 
     basic_istream<char>& 
@@ -77,6 +73,10 @@ namespace std
 
 namespace __gnu_cxx
 {
+#ifdef _GLIBCXX_INST_ATOMICITY_LOCK
+  template volatile int _Atomicity_lock<0>::_S_atomicity_lock;
+#endif
+
 #ifdef _GLIBCXX_NEED_GENERIC_MUTEX
 #ifdef __GTHREAD_MUTEX_INIT
   __gthread_mutex_t _Atomic_add_mutex = __GTHREAD_MUTEX_INIT;