aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely.gcc@gmail.com>2012-02-07 09:19:27 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2012-02-07 09:19:27 +0000
commitb59cbd503473a38ddc09ed69f36ff534eaa88d11 (patch)
treeb3f505dfbd64bd876c4195d271a4aaff77b5422a /libstdc++-v3
parent38cbc63a76d7502c58c82402d6227ba78f5e2dc0 (diff)
downloadgcc-b59cbd503473a38ddc09ed69f36ff534eaa88d11.zip
gcc-b59cbd503473a38ddc09ed69f36ff534eaa88d11.tar.gz
gcc-b59cbd503473a38ddc09ed69f36ff534eaa88d11.tar.bz2
re PR libstdc++/51296 (Several 30_threads tests FAIL on Tru64 UNIX)
libgcc/ PR libstdc++/51296 PR libstdc++/51906 * gthr-posix.h: Allow static initializer macros to be disabled. (__gthrw_pthread_cond_init): Define weak reference unconditionally. libstdc++-v3/ PR libstdc++/51296 * include/std/mutex (__mutex_base::~__mutex_base): Declare noexcept. * src/c++11/condition_variable.cc (condition_variable): Use macro for initializer function. PR libstdc++/51906 * config/os/bsd/darwin/os_defines.h: Disable static initializer for recursive mutexes. From-SVN: r183955
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/config/os/bsd/darwin/os_defines.h3
-rw-r--r--libstdc++-v3/include/std/mutex2
-rw-r--r--libstdc++-v3/src/c++11/condition_variable.cc5
4 files changed, 16 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 434fd98..b708ae0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+2012-02-07 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51296
+ * include/std/mutex (__mutex_base::~__mutex_base): Declare noexcept.
+ * src/c++11/condition_variable.cc (condition_variable): Use macro for
+ initializer function.
+
+ PR libstdc++/51906
+ * config/os/bsd/darwin/os_defines.h: Disable static initializer for
+ recursive mutexes.
+
2012-02-06 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/52128
diff --git a/libstdc++-v3/config/os/bsd/darwin/os_defines.h b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
index ccefeaf..421478d 100644
--- a/libstdc++-v3/config/os/bsd/darwin/os_defines.h
+++ b/libstdc++-v3/config/os/bsd/darwin/os_defines.h
@@ -39,4 +39,7 @@
// -flat_namespace to work around the way that it doesn't.
#define _GLIBCXX_WEAK_DEFINITION __attribute__ ((weak))
+// Static initializer macro is buggy in darwin, see libstdc++/51906
+#define _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC
+
#endif
diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex
index 69e26e6..a7ebace 100644
--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -71,7 +71,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
}
- ~__mutex_base() { __gthread_mutex_destroy(&_M_mutex); }
+ ~__mutex_base() noexcept { __gthread_mutex_destroy(&_M_mutex); }
#endif
__mutex_base(const __mutex_base&) = delete;
diff --git a/libstdc++-v3/src/c++11/condition_variable.cc b/libstdc++-v3/src/c++11/condition_variable.cc
index 400fcf3..9cd0763 100644
--- a/libstdc++-v3/src/c++11/condition_variable.cc
+++ b/libstdc++-v3/src/c++11/condition_variable.cc
@@ -36,10 +36,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#else
condition_variable::condition_variable() noexcept
{
- int __e = __gthread_cond_init(&_M_cond, 0);
-
- if (__e)
- __throw_system_error(__e);
+ __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
}
condition_variable::~condition_variable() noexcept