Commit eb407c34 by Jonathan Wakely Committed by Jonathan Wakely

re PR libstdc++/53270 (Error when bootstrapping gcc on hppa2.0-unknown-linux-gcc)

	PR libstdc++/53270
	* include/ext/concurrence.h (__mutex, __recursive_mutex, __cond): Use
	NSDMI in C++98 mode too.
	* include/ext/rope: Add system_header pragma.
	(_Refcount_Base, _Rope_RopeRep): Use NSDMI.
	(_Rope_RopeRep::~_Rope_RopeRep): Destroy mutex.

From-SVN: r189553
parent b3ff651a
2012-07-16 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/53270
* include/ext/concurrence.h (__mutex, __recursive_mutex, __cond): Use
NSDMI in C++98 mode too.
* include/ext/rope: Add system_header pragma.
(_Refcount_Base, _Rope_RopeRep): Use NSDMI.
(_Rope_RopeRep::~_Rope_RopeRep): Destroy mutex.
2012-07-16 Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/53978
* include/bits/alloc_traits.h (allocator_traits): Define static
constants.
......
// Support for concurrent programing -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
// Copyright (C) 2003-2012 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
......@@ -143,8 +142,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
class __mutex
{
private:
#if __GTHREADS && defined __GTHREAD_MUTEX_INIT \
&& defined __GXX_EXPERIMENTAL_CXX0X__
#if __GTHREADS && defined __GTHREAD_MUTEX_INIT
__gthread_mutex_t _M_mutex = __GTHREAD_MUTEX_INIT;
#else
__gthread_mutex_t _M_mutex;
......@@ -156,20 +154,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public:
__mutex()
{
#if __GTHREADS
#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT
if (__gthread_active_p())
{
#if defined __GTHREAD_MUTEX_INIT
# ifndef __GXX_EXPERIMENTAL_CXX0X__
__gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
_M_mutex = __tmp;
# endif
#else
__GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
#endif
}
#endif
}
#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT
~__mutex()
......@@ -208,8 +197,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
class __recursive_mutex
{
private:
#if __GTHREADS && defined __GTHREAD_RECURSIVE_MUTEX_INIT \
&& defined __GXX_EXPERIMENTAL_CXX0X__
#if __GTHREADS && defined __GTHREAD_RECURSIVE_MUTEX_INIT
__gthread_recursive_mutex_t _M_mutex = __GTHREAD_RECURSIVE_MUTEX_INIT;
#else
__gthread_recursive_mutex_t _M_mutex;
......@@ -221,20 +209,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public:
__recursive_mutex()
{
#if __GTHREADS
#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
if (__gthread_active_p())
{
#if defined __GTHREAD_RECURSIVE_MUTEX_INIT
# ifndef __GXX_EXPERIMENTAL_CXX0X__
__gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
_M_mutex = __tmp;
# endif
#else
__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
#endif
}
#endif
}
#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
~__recursive_mutex()
......@@ -333,8 +312,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
class __cond
{
private:
#if __GTHREADS && defined __GTHREAD_COND_INIT \
&& defined __GXX_EXPERIMENTAL_CXX0X__
#if __GTHREADS && defined __GTHREAD_COND_INIT
__gthread_cond_t _M_cond = __GTHREAD_COND_INIT;
#else
__gthread_cond_t _M_cond;
......@@ -346,20 +324,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
public:
__cond()
{
#if __GTHREADS
#if __GTHREADS && ! defined __GTHREAD_COND_INIT
if (__gthread_active_p())
{
#if defined __GTHREAD_COND_INIT
# ifndef __GXX_EXPERIMENTAL_CXX0X__
__gthread_cond_t __tmp = __GTHREAD_COND_INIT;
_M_cond = __tmp;
# endif
#else
__GTHREAD_COND_INIT_FUNCTION(&_M_cond);
#endif
}
#endif
}
#if __GTHREADS && ! defined __GTHREAD_COND_INIT
~__cond()
......
// SGI's rope class -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
// Free Software Foundation, Inc.
// Copyright (C) 2001-2012 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
......@@ -44,6 +43,8 @@
#ifndef _ROPE
#define _ROPE 1
#pragma GCC system_header
#include <algorithm>
#include <iosfwd>
#include <bits/stl_construct.h>
......@@ -458,24 +459,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
volatile _RC_t _M_ref_count;
// Constructor
#if defined __GTHREAD_MUTEX_INIT && defined __GXX_EXPERIMENTAL_CXX0X__
#ifdef __GTHREAD_MUTEX_INIT
__gthread_mutex_t _M_ref_count_lock = __GTHREAD_MUTEX_INIT;
#else
__gthread_mutex_t _M_ref_count_lock;
#endif
_Refcount_Base(_RC_t __n) : _M_ref_count(__n), _M_ref_count_lock()
_Refcount_Base(_RC_t __n) : _M_ref_count(__n)
{
#ifdef __GTHREAD_MUTEX_INIT
# ifndef __GXX_EXPERIMENTAL_CXX0X__
__gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
_M_ref_count_lock = __tmp;
# endif
#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
#ifndef __GTHREAD_MUTEX_INIT
#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
__GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
#else
#error __GTHREAD_MUTEX_INIT or __GTHREAD_MUTEX_INIT_FUNCTION should be defined by gthr.h abstraction layer, report problem to libstdc++@gcc.gnu.org.
#endif
#endif
}
#ifndef __GTHREAD_MUTEX_INIT
......@@ -592,7 +590,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
bool _M_is_balanced:8;
unsigned char _M_depth;
__GC_CONST _CharT* _M_c_string;
#ifdef __GTHREAD_MUTEX_INIT
__gthread_mutex_t _M_c_string_lock = __GTHREAD_MUTEX_INIT;
#else
__gthread_mutex_t _M_c_string_lock;
#endif
/* Flattened version of string, if needed. */
/* typically 0. */
/* If it's not 0, then the memory is owned */
......@@ -613,13 +615,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
#ifdef __GTHREAD_MUTEX_INIT
{
// Do not copy a POSIX/gthr mutex once in use. However, bits are bits.
__gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
_M_c_string_lock = __tmp;
}
{ }
#else
{ __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
~_Rope_RopeRep()
{ __gthread_mutex_destroy (&_M_c_string_lock); }
#endif
#ifdef __GC
void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment