Commit ed3cb497 by Pauli Nieminen Committed by Jonathan Wakely

Support exception propagation without lock-free atomic int

2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/64735
	* acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
	* config.h.in: Regenerate.
	* config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
	(GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
	exports for exception_ptr, nested_exception, and future conditional.
	[HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
	exports for exception_ptr, nested_exception, and future conditional.
	* configure: Regenerate.
	* configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
	* include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
	* libsupc++/eh_atomics.h: New file for internal use only.
	(__eh_atomic_inc, __eh_atomic_dec): New.
	* libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
	(exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
	(rethrow_exception): Use eh_atomics.h reference counting helpers.
	* libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
	* libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
	* libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
	* libsupc++/exception_ptr.h: Likewise.
	* libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
	* libsupc++/nested_exception.cc: Remove check for
	ATOMIC_INT_LOCK_FREE.
	* libsupc++/nested_exception.h: Likewise.
	* src/c++11/future.cc: Likewise.
	* testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
	* testsuite/18_support/nested_exception/*: Likewise.
	* testsuite/30_threads/async/*: Likewise.
	* testsuite/30_threads/future/*: Likewise.
	* testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
	* testsuite/30_threads/packaged_task/*: Likewise.
	* testsuite/30_threads/promise/*: Likewise.
	* testsuite/30_threads/shared_future/*: Likewise.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r244051
parent 165ba2e9
2017-01-04 Pauli Nieminen <suokkos@gmail.com>
Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/64735
* acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
* config.h.in: Regenerate.
* config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
(GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
exports for exception_ptr, nested_exception, and future conditional.
[HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
exports for exception_ptr, nested_exception, and future conditional.
* configure: Regenerate.
* configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
* include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
* libsupc++/eh_atomics.h: New file for internal use only.
(__eh_atomic_inc, __eh_atomic_dec): New.
* libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
(exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
(rethrow_exception): Use eh_atomics.h reference counting helpers.
* libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
* libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
* libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
* libsupc++/exception_ptr.h: Likewise.
* libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
* libsupc++/nested_exception.cc: Remove check for
ATOMIC_INT_LOCK_FREE.
* libsupc++/nested_exception.h: Likewise.
* src/c++11/future.cc: Likewise.
* testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
* testsuite/18_support/nested_exception/*: Likewise.
* testsuite/30_threads/async/*: Likewise.
* testsuite/30_threads/future/*: Likewise.
* testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/packaged_task/*: Likewise.
* testsuite/30_threads/promise/*: Likewise.
* testsuite/30_threads/shared_future/*: Likewise.
2017-01-03 Gerald Pfeifer <gerald@pfeifer.com> 2017-01-03 Gerald Pfeifer <gerald@pfeifer.com>
* doc/xml/manual/documentation_hacking.xml: sourceforge.net now * doc/xml/manual/documentation_hacking.xml: sourceforge.net now
......
...@@ -4480,6 +4480,43 @@ AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [ ...@@ -4480,6 +4480,43 @@ AC_DEFUN([GLIBCXX_CHECK_SIZE_T_MANGLING], [
[Define to the letter to which size_t is mangled.]) [Define to the letter to which size_t is mangled.])
]) ])
dnl
dnl Determine whether std::exception_ptr symbols should be exported with
dnl the symbol versions from GCC 4.6.0 or GCC 7.1.0, depending on which
dnl release first added support for std::exception_ptr. Originally it was
dnl only supported for targets with always-lock-free atomics for int, but
dnl since GCC 7.1 it is supported for all targets.
dnl
AC_DEFUN([GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER], [
if test $enable_symvers != no; then
AC_MSG_CHECKING([for first version to support std::exception_ptr])
case ${target} in
aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \
m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* )
ac_exception_ptr_since_gcc46=yes
;;
*)
# If the value of this macro changes then we will need to hardcode
# yes/no here for additional targets based on the original value.
AC_TRY_COMPILE([], [
#if __GCC_ATOMIC_INT_LOCK_FREE <= 1
# error atomic int not always lock free
#endif
],
[ac_exception_ptr_since_gcc46=yes],
[ac_exception_ptr_since_gcc46=no])
;;
esac
if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then
AC_DEFINE(HAVE_EXCEPTION_PTR_SINCE_GCC46, 1,
[Define to 1 if GCC 4.6 supported std::exception_ptr for the target])
AC_MSG_RESULT([4.6.0])
else
AC_MSG_RESULT([7.1.0])
fi
fi
])
# Macros from the top-level gcc directory. # Macros from the top-level gcc directory.
m4_include([../config/gc++filt.m4]) m4_include([../config/gc++filt.m4])
m4_include([../config/tls.m4]) m4_include([../config/tls.m4])
......
...@@ -123,6 +123,9 @@ ...@@ -123,6 +123,9 @@
/* Define if EWOULDBLOCK exists. */ /* Define if EWOULDBLOCK exists. */
#undef HAVE_EWOULDBLOCK #undef HAVE_EWOULDBLOCK
/* Define to 1 if GCC 4.6 supported std::exception_ptr for the target */
#undef HAVE_EXCEPTION_PTR_SINCE_GCC46
/* Define to 1 if you have the <execinfo.h> header file. */ /* Define to 1 if you have the <execinfo.h> header file. */
#undef HAVE_EXECINFO_H #undef HAVE_EXECINFO_H
......
...@@ -1503,6 +1503,9 @@ GLIBCXX_3.4.15 { ...@@ -1503,6 +1503,9 @@ GLIBCXX_3.4.15 {
_ZNSt14error_categoryC*; _ZNSt14error_categoryC*;
_ZNSt14error_categoryD*; _ZNSt14error_categoryD*;
#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::future symbols are only present in this version when
# atomic operations on int are always lock-free.
_ZNSt13__future_base12_Result_baseC*; _ZNSt13__future_base12_Result_baseC*;
_ZNSt13__future_base12_Result_baseD*; _ZNSt13__future_base12_Result_baseD*;
_ZTINSt13__future_base12_Result_baseE; _ZTINSt13__future_base12_Result_baseE;
...@@ -1511,6 +1514,7 @@ GLIBCXX_3.4.15 { ...@@ -1511,6 +1514,7 @@ GLIBCXX_3.4.15 {
_ZNSt13__future_base11_State_baseD*; _ZNSt13__future_base11_State_baseD*;
_ZTINSt13__future_base11_State_baseE; _ZTINSt13__future_base11_State_baseE;
_ZTVNSt13__future_base11_State_baseE; _ZTVNSt13__future_base11_State_baseE;
#endif
} GLIBCXX_3.4.14; } GLIBCXX_3.4.14;
...@@ -1687,8 +1691,10 @@ GLIBCXX_3.4.21 { ...@@ -1687,8 +1691,10 @@ GLIBCXX_3.4.21 {
# std::notify_all_at_thread_exit # std::notify_all_at_thread_exit
_ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE; _ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE;
#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::__future_base::_State_baseV2::_Make_ready::_M_set() # std::__future_base::_State_baseV2::_Make_ready::_M_set()
_ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv; _ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv;
#endif
# ABI-tagged std::basic_string # ABI-tagged std::basic_string
_ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[01]**; _ZNSt7__cxx1112basic_stringI[cw]St11char_traitsI[cw]ESaI[cw]EE1[01]**;
...@@ -1947,6 +1953,16 @@ GLIBCXX_3.4.23 { ...@@ -1947,6 +1953,16 @@ GLIBCXX_3.4.23 {
_ZNSsC[12]ERKSs[jmy]RKSaIcE; _ZNSsC[12]ERKSs[jmy]RKSaIcE;
_ZNSbIwSt11char_traitsIwESaIwEEC[12]ERKS2_mRKS1_; _ZNSbIwSt11char_traitsIwESaIwEEC[12]ERKS2_mRKS1_;
#ifndef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::future symbols are exported in the first version to support
# std::exception_ptr
_ZNSt13__future_base12_Result_baseC*;
_ZNSt13__future_base12_Result_baseD*;
_ZTINSt13__future_base12_Result_baseE;
_ZTVNSt13__future_base12_Result_baseE;
_ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv;
#endif
} GLIBCXX_3.4.22; } GLIBCXX_3.4.22;
# Symbols in the support library (libsupc++) have their own tag. # Symbols in the support library (libsupc++) have their own tag.
...@@ -2080,6 +2096,7 @@ CXXABI_1.3.3 { ...@@ -2080,6 +2096,7 @@ CXXABI_1.3.3 {
_ZTIPDi; _ZTIPDi;
_ZTIPKDi; _ZTIPKDi;
#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# exception_ptr # exception_ptr
_ZNSt15__exception_ptr13exception_ptrC1Ev; _ZNSt15__exception_ptr13exception_ptrC1Ev;
_ZNSt15__exception_ptr13exception_ptrC2Ev; _ZNSt15__exception_ptr13exception_ptrC2Ev;
...@@ -2099,6 +2116,7 @@ CXXABI_1.3.3 { ...@@ -2099,6 +2116,7 @@ CXXABI_1.3.3 {
_ZSt17current_exceptionv; _ZSt17current_exceptionv;
_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE; _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
#endif
} CXXABI_1.3.2; } CXXABI_1.3.2;
...@@ -2129,10 +2147,12 @@ CXXABI_1.3.5 { ...@@ -2129,10 +2147,12 @@ CXXABI_1.3.5 {
# FNV hash. # FNV hash.
_ZSt15_Fnv_hash_bytesPKv*; _ZSt15_Fnv_hash_bytesPKv*;
#ifdef HAVE_EXCEPTION_PTR_SINCE_GCC46
# std::nested_exception # std::nested_exception
_ZNSt16nested_exceptionD*; _ZNSt16nested_exceptionD*;
_ZTISt16nested_exception; _ZTISt16nested_exception;
_ZTVSt16nested_exception; _ZTVSt16nested_exception;
#endif
} CXXABI_1.3.4; } CXXABI_1.3.4;
...@@ -2209,6 +2229,33 @@ CXXABI_1.3.11 { ...@@ -2209,6 +2229,33 @@ CXXABI_1.3.11 {
_ZdaPvSt11align_val_tRKSt9nothrow_t; _ZdaPvSt11align_val_tRKSt9nothrow_t;
_ZdaPv[jmy]St11align_val_t; _ZdaPv[jmy]St11align_val_t;
#ifndef HAVE_EXCEPTION_PTR_SINCE_GCC46
# exception_ptr
_ZNSt15__exception_ptr13exception_ptrC1Ev;
_ZNSt15__exception_ptr13exception_ptrC2Ev;
_ZNSt15__exception_ptr13exception_ptrC1ERKS0_;
_ZNSt15__exception_ptr13exception_ptrC2ERKS0_;
_ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE;
_ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE;
_ZNSt15__exception_ptr13exception_ptrD1Ev;
_ZNSt15__exception_ptr13exception_ptrD2Ev;
_ZNSt15__exception_ptr13exception_ptraSERKS0_;
_ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv;
_ZNKSt15__exception_ptr13exception_ptrntEv;
_ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv;
_ZNSt15__exception_ptr13exception_ptr4swapERS0_;
_ZNSt15__exception_ptreqERKNS_13exception_ptrES2_;
_ZNSt15__exception_ptrneERKNS_13exception_ptrES2_;
_ZSt17current_exceptionv;
_ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE;
# std::nested_exception
_ZNSt16nested_exceptionD*;
_ZTISt16nested_exception;
_ZTVSt16nested_exception;
#endif
} CXXABI_1.3.10; } CXXABI_1.3.10;
# Symbols in the support library (libsupc++) supporting transactional memory. # Symbols in the support library (libsupc++) supporting transactional memory.
......
...@@ -80664,6 +80664,55 @@ _ACEOF ...@@ -80664,6 +80664,55 @@ _ACEOF
# Check which release added std::exception_ptr for the target
if test $enable_symvers != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for first version to support std::exception_ptr" >&5
$as_echo_n "checking for first version to support std::exception_ptr... " >&6; }
case ${target} in
aarch64-*-* | alpha-*-* | hppa*-*-* | i?86-*-* | x86_64-*-* | \
m68k-*-* | powerpc*-*-* | s390*-*-* | *-*-solaris* )
ac_exception_ptr_since_gcc46=yes
;;
*)
# If the value of this macro changes then we will need to hardcode
# yes/no here for additional targets based on the original value.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
#if __GCC_ATOMIC_INT_LOCK_FREE <= 1
# error atomic int not always lock free
#endif
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_exception_ptr_since_gcc46=yes
else
ac_exception_ptr_since_gcc46=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
;;
esac
if test x"$ac_exception_ptr_since_gcc46" = x"yes" ; then
$as_echo "#define HAVE_EXCEPTION_PTR_SINCE_GCC46 1" >>confdefs.h
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 4.6.0" >&5
$as_echo "4.6.0" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 7.1.0" >&5
$as_echo "7.1.0" >&6; }
fi
fi
# Define documentation rules conditionally. # Define documentation rules conditionally.
# See if makeinfo has been installed and is modern enough # See if makeinfo has been installed and is modern enough
...@@ -419,6 +419,9 @@ GLIBCXX_CHECK_FILESYSTEM_DEPS ...@@ -419,6 +419,9 @@ GLIBCXX_CHECK_FILESYSTEM_DEPS
# For Transactional Memory TS # For Transactional Memory TS
GLIBCXX_CHECK_SIZE_T_MANGLING GLIBCXX_CHECK_SIZE_T_MANGLING
# Check which release added std::exception_ptr for the target
GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER
# Define documentation rules conditionally. # Define documentation rules conditionally.
# See if makeinfo has been installed and is modern enough # See if makeinfo has been installed and is modern enough
......
...@@ -192,8 +192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -192,8 +192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
future<__async_result_of<_Fn, _Args...>> future<__async_result_of<_Fn, _Args...>>
async(_Fn&& __fn, _Args&&... __args); async(_Fn&& __fn, _Args&&... __args);
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \ #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
&& (ATOMIC_INT_LOCK_FREE > 1)
/// Base class and enclosing scope. /// Base class and enclosing scope.
struct __future_base struct __future_base
...@@ -1751,7 +1750,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -1751,7 +1750,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif // _GLIBCXX_ASYNC_ABI_COMPAT #endif // _GLIBCXX_ASYNC_ABI_COMPAT
#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
// && ATOMIC_INT_LOCK_FREE
// @} group futures // @} group futures
_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION
......
// Exception Handling support header for -*- C++ -*-
// Copyright (C) 2016 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
/** @file eh_atomics.h
* This is an internal header file, included by library source files.
* Do not attempt to use it directly.
*/
#ifndef _EH_ATOMICS_H
#define _EH_ATOMICS_H 1
#include <bits/c++config.h>
#include <bits/atomic_word.h>
#include <bits/atomic_lockfree_defines.h>
#if ATOMIC_INT_LOCK_FREE <= 1
# include <ext/atomicity.h>
#endif
#pragma GCC visibility push(default)
extern "C++" {
namespace __gnu_cxx
{
void
__eh_atomic_inc (_Atomic_word* __count) __attribute__((always_inline));
bool
__eh_atomic_dec (_Atomic_word* __count) __attribute__((always_inline));
// Increments the count.
inline void
__eh_atomic_inc (_Atomic_word* __count)
{
#if ATOMIC_INT_LOCK_FREE > 1
__atomic_add_fetch (__count, 1, __ATOMIC_ACQ_REL);
#else
_GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE (__count);
__gnu_cxx::__atomic_add_dispatch (__count, 1);
_GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER (__count);
#endif
}
// Decrements the count and returns true if it reached zero.
inline bool
__eh_atomic_dec (_Atomic_word* __count)
{
#if ATOMIC_INT_LOCK_FREE > 1
return __atomic_sub_fetch (__count, 1, __ATOMIC_ACQ_REL) == 0;
#else
_GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE (__count);
if (__gnu_cxx::__exchange_and_add_dispatch (__count, -1) == 1)
{
_GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER (__count);
return true;
}
return false;
#endif
}
} // namespace __gnu_cxx
}
#pragma GCC visibility pop
#endif // _EH_ATOMICS_H
...@@ -23,9 +23,7 @@ ...@@ -23,9 +23,7 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
#include <bits/c++config.h> #include <bits/c++config.h>
#include <bits/atomic_lockfree_defines.h> #include "eh_atomics.h"
#if ATOMIC_INT_LOCK_FREE > 1
#define _GLIBCXX_EH_PTR_COMPAT #define _GLIBCXX_EH_PTR_COMPAT
...@@ -101,7 +99,7 @@ std::__exception_ptr::exception_ptr::_M_addref() noexcept ...@@ -101,7 +99,7 @@ std::__exception_ptr::exception_ptr::_M_addref() noexcept
{ {
__cxa_refcounted_exception *eh = __cxa_refcounted_exception *eh =
__get_refcounted_exception_header_from_obj (_M_exception_object); __get_refcounted_exception_header_from_obj (_M_exception_object);
__atomic_add_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL); __gnu_cxx::__eh_atomic_inc (&eh->referenceCount);
} }
} }
...@@ -113,7 +111,7 @@ std::__exception_ptr::exception_ptr::_M_release() noexcept ...@@ -113,7 +111,7 @@ std::__exception_ptr::exception_ptr::_M_release() noexcept
{ {
__cxa_refcounted_exception *eh = __cxa_refcounted_exception *eh =
__get_refcounted_exception_header_from_obj (_M_exception_object); __get_refcounted_exception_header_from_obj (_M_exception_object);
if (__atomic_sub_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) if (__gnu_cxx::__eh_atomic_dec (&eh->referenceCount))
{ {
if (eh->exc.exceptionDestructor) if (eh->exc.exceptionDestructor)
eh->exc.exceptionDestructor (_M_exception_object); eh->exc.exceptionDestructor (_M_exception_object);
...@@ -211,7 +209,7 @@ __gxx_dependent_exception_cleanup(_Unwind_Reason_Code code, ...@@ -211,7 +209,7 @@ __gxx_dependent_exception_cleanup(_Unwind_Reason_Code code,
__cxa_free_dependent_exception (dep); __cxa_free_dependent_exception (dep);
if (__atomic_sub_fetch (&header->referenceCount, 1, __ATOMIC_ACQ_REL) == 0) if (__gnu_cxx::__eh_atomic_dec (&header->referenceCount))
{ {
if (header->exc.exceptionDestructor) if (header->exc.exceptionDestructor)
header->exc.exceptionDestructor (header + 1); header->exc.exceptionDestructor (header + 1);
...@@ -230,7 +228,7 @@ std::rethrow_exception(std::exception_ptr ep) ...@@ -230,7 +228,7 @@ std::rethrow_exception(std::exception_ptr ep)
__cxa_dependent_exception *dep = __cxa_allocate_dependent_exception (); __cxa_dependent_exception *dep = __cxa_allocate_dependent_exception ();
dep->primaryException = obj; dep->primaryException = obj;
__atomic_add_fetch (&eh->referenceCount, 1, __ATOMIC_ACQ_REL); __gnu_cxx::__eh_atomic_inc (&eh->referenceCount);
dep->unexpectedHandler = get_unexpected (); dep->unexpectedHandler = get_unexpected ();
dep->terminateHandler = get_terminate (); dep->terminateHandler = get_terminate ();
...@@ -252,5 +250,3 @@ std::rethrow_exception(std::exception_ptr ep) ...@@ -252,5 +250,3 @@ std::rethrow_exception(std::exception_ptr ep)
} }
#undef _GLIBCXX_EH_PTR_COMPAT #undef _GLIBCXX_EH_PTR_COMPAT
#endif
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <bits/c++config.h> #include <bits/c++config.h>
#include "unwind-cxx.h" #include "unwind-cxx.h"
#include "eh_atomics.h"
using namespace __cxxabiv1; using namespace __cxxabiv1;
...@@ -42,17 +43,13 @@ __gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc) ...@@ -42,17 +43,13 @@ __gxx_exception_cleanup (_Unwind_Reason_Code code, _Unwind_Exception *exc)
if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON) if (code != _URC_FOREIGN_EXCEPTION_CAUGHT && code != _URC_NO_REASON)
__terminate (header->exc.terminateHandler); __terminate (header->exc.terminateHandler);
#if ATOMIC_INT_LOCK_FREE > 1 if (__gnu_cxx::__eh_atomic_dec (&header->referenceCount))
if (__atomic_sub_fetch (&header->referenceCount, 1, __ATOMIC_ACQ_REL) == 0)
{ {
#endif
if (header->exc.exceptionDestructor) if (header->exc.exceptionDestructor)
header->exc.exceptionDestructor (header + 1); header->exc.exceptionDestructor (header + 1);
__cxa_free_exception (header + 1); __cxa_free_exception (header + 1);
#if ATOMIC_INT_LOCK_FREE > 1
} }
#endif
} }
extern "C" __cxa_refcounted_exception* extern "C" __cxa_refcounted_exception*
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <cstdlib> #include <cstdlib>
#include "unwind-cxx.h" #include "unwind-cxx.h"
#include "eh_atomics.h"
using namespace __cxxabiv1; using namespace __cxxabiv1;
...@@ -45,9 +46,7 @@ free_any_cxa_exception (_Unwind_Exception *eo) ...@@ -45,9 +46,7 @@ free_any_cxa_exception (_Unwind_Exception *eo)
__cxa_free_dependent_exception (dep); __cxa_free_dependent_exception (dep);
} }
#if __GCC_ATOMIC_INT_LOCK_FREE > 1 if (__gnu_cxx::__eh_atomic_dec (&h->referenceCount))
if (__atomic_sub_fetch (&h->referenceCount, 1, __ATOMIC_ACQ_REL) == 0)
#endif
__cxa_free_exception (h + 1); __cxa_free_exception (h + 1);
} }
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#pragma GCC visibility push(default) #pragma GCC visibility push(default)
#include <bits/c++config.h> #include <bits/c++config.h>
#include <bits/atomic_lockfree_defines.h>
#include <bits/exception.h> #include <bits/exception.h>
extern "C++" { extern "C++" {
...@@ -139,7 +138,7 @@ _GLIBCXX_END_NAMESPACE_VERSION ...@@ -139,7 +138,7 @@ _GLIBCXX_END_NAMESPACE_VERSION
#pragma GCC visibility pop #pragma GCC visibility pop
#if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1) #if (__cplusplus >= 201103L)
#include <bits/exception_ptr.h> #include <bits/exception_ptr.h>
#include <bits/nested_exception.h> #include <bits/nested_exception.h>
#endif #endif
......
...@@ -39,10 +39,6 @@ ...@@ -39,10 +39,6 @@
#include <typeinfo> #include <typeinfo>
#include <new> #include <new>
#if ATOMIC_INT_LOCK_FREE < 2
# error This platform does not support exception propagation.
#endif
extern "C++" { extern "C++" {
namespace std namespace std
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <new> #include <new>
#include <ext/atomicity.h> #include <ext/atomicity.h>
#include <ext/concurrence.h> #include <ext/concurrence.h>
#include <bits/atomic_lockfree_defines.h>
#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \ #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
&& (ATOMIC_INT_LOCK_FREE > 1) && defined(_GLIBCXX_HAVE_LINUX_FUTEX) && (ATOMIC_INT_LOCK_FREE > 1) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
# include <climits> # include <climits>
......
...@@ -25,7 +25,5 @@ ...@@ -25,7 +25,5 @@
namespace std namespace std
{ {
#if ATOMIC_INT_LOCK_FREE > 1
nested_exception::~nested_exception() noexcept = default; nested_exception::~nested_exception() noexcept = default;
#endif
} // namespace std } // namespace std
...@@ -39,10 +39,6 @@ ...@@ -39,10 +39,6 @@
#include <bits/c++config.h> #include <bits/c++config.h>
#include <bits/move.h> #include <bits/move.h>
#if ATOMIC_INT_LOCK_FREE < 2
# error This platform does not support exception propagation.
#endif
extern "C++" { extern "C++" {
namespace std namespace std
......
...@@ -78,8 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ...@@ -78,8 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const char* const char*
future_error::what() const noexcept { return logic_error::what(); } future_error::what() const noexcept { return logic_error::what(); }
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \ #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
&& (ATOMIC_INT_LOCK_FREE > 1)
__future_base::_Result_base::_Result_base() = default; __future_base::_Result_base::_Result_base() = default;
__future_base::_Result_base::~_Result_base() = default; __future_base::_Result_base::~_Result_base() = default;
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2015-2017 Free Software Foundation, Inc. // Copyright (C) 2015-2017 Free Software Foundation, Inc.
// //
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
// { dg-options "-fno-exceptions -O0" } // { dg-options "-fno-exceptions -O0" }
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
#include <exception> #include <exception>
#include <testsuite_hooks.h> #include <testsuite_hooks.h>
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> // 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at>
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> // 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at>
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at> // 2008-05-25 Sebastian Redl <sebastian.redl@getdesigned.at>
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2015-2017 Free Software Foundation, Inc. // Copyright (C) 2015-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// { dg-require-sleep "" } // { dg-require-sleep "" }
// Copyright (C) 2012-2017 Free Software Foundation, Inc. // Copyright (C) 2012-2017 Free Software Foundation, Inc.
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// LWG 2021. Further incorrect usages of result_of // LWG 2021. Further incorrect usages of result_of
// Arguments to result_of should use decay. // Arguments to result_of should use decay.
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
// { dg-options "-fno-inline -g0" } // { dg-options "-fno-inline -g0" }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// { dg-final { scan-assembler-not "_ZNSt6futureIvEC2Ev" } } // { dg-final { scan-assembler-not "_ZNSt6futureIvEC2Ev" } }
// { dg-final { scan-assembler-not "_ZNSt6futureIiEC2Ev" } } // { dg-final { scan-assembler-not "_ZNSt6futureIiEC2Ev" } }
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target c++11 } } // { dg-do run { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2013-2017 Free Software Foundation, Inc. // Copyright (C) 2013-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do run { target *-*-linux* *-*-gnu* } } // { dg-do run { target *-*-linux* *-*-gnu* } }
// { dg-options "-pthread" { target *-*-linux* *-*-gnu* *-*-solaris* } } // { dg-options "-pthread" { target *-*-linux* *-*-gnu* *-*-solaris* } }
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2014-2017 Free Software Foundation, Inc. // Copyright (C) 2014-2017 Free Software Foundation, Inc.
// //
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
#include <future> #include <future>
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
// { dg-require-effective-target c++11 } // { dg-require-effective-target c++11 }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2010-2017 Free Software Foundation, Inc. // Copyright (C) 2010-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2011-2017 Free Software Foundation, Inc. // Copyright (C) 2011-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
// { dg-do compile { target c++11 } } // { dg-do compile { target c++11 } }
// { dg-require-cstdint "" } // { dg-require-cstdint "" }
// { dg-require-gthreads "" } // { dg-require-gthreads "" }
// { dg-require-atomic-builtins "" }
// Copyright (C) 2009-2017 Free Software Foundation, Inc. // Copyright (C) 2009-2017 Free Software Foundation, Inc.
// //
......
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