gcc/libstdc++-v3
Jonathan Wakely 25999a112f Implement P0558R2 changes to std::atomic
The restrictions forbidding arithmetic on atomic pointer types are only
enabled for C++17 and later, retaining the GNU extension for older
standards. The new nested typedefs and changes to prevent scalar
parameters participating in template argument deduction are enabled
unconditionally.

	PR libstdc++/69769
	PR libstdc++/85886
	* include/bits/atomic_base.h (__atomic_base::value_type)
	(__atomic_base::difference_type): Add new typedefs.
	* include/std/atomic (atomic<bool>::value_type, atomic<T>::value_type)
	(atomic<T*>::value_type, atomic<T*>::difference_type): Likewise.
	(atomic<T*>::operator++, atomic<T*>::operator--)
	(atomic<T*>::operator+=, atomic<T*>::operator-=)
	(atomic<T*>::fetch_add, atomic<T*>::fetch_sub): Add static assertion
	to enforce C++17 requirement on pointer arithmetic.
	(__atomic_val_t, __atomic_diff_t): New alias templates.
	(atomic_init, atomic_store_explicit, atomic_exchange_explicit)
	(atomic_compare_exchange_weak_explicit)
	(atomic_compare_exchange_strong_explicit, atomic_store)
	(atomic_exchange, atomic_compare_exchange_weak)
	(atomic_compare_exchange_strong): Use __atomic_val_t to make
	scalar parameters be non-deduced contexts.
	(atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
	(atomic_fetch_add, atomic_fetch_sub): Change first parameter to be
	atomic instead of __atomic_base, and use __atomic_diff_t for scalar
	parameters.
	(atomic_fetch_and_explicit, atomic_fetch_or_explicit)
	(atomic_fetch_xor_explicit, atomic_fetch_and, atomic_fetch_or)
	(atomic_fetch_xor): Use __atomic_val_t for scalar parameters.
	(atomic_fetch_add_explicit, atomic_fetch_sub_explicit)
	(atomic_fetch_add, atomic_fetch_sub): Remove overloads for atomic
	address types.
	* testsuite/29_atomics/atomic/60695.cc: Adjust dg-error lineno.
	* testsuite/29_atomics/atomic/69769.cc: New test.
	* testsuite/29_atomics/atomic/nonmembers.cc: New test.
	* testsuite/29_atomics/atomic/operators/pointer_partial_void.cc:
	Disable test for C++17 and later.
	* testsuite/29_atomics/atomic/requirements/typedefs.cc: New test.
	* testsuite/29_atomics/atomic_integral/nonmembers.cc: New test.
	* testsuite/29_atomics/atomic_integral/requirements/typedefs.cc: New
	test.

From-SVN: r260676
2018-05-24 16:28:26 +01:00
..
config Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
doc Document Dual ABI for std::ios_base::failure 2018-05-10 20:13:42 +01:00
include Implement P0558R2 changes to std::atomic 2018-05-24 16:28:26 +01:00
libsupc++ Some libstdc++ fixes for -Wdeprecated-copy. 2018-05-18 16:02:14 -04:00
po Update copyright years. 2018-01-03 11:03:58 +01:00
python printers.py (build_libstdcxx_dictionary): Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers registration. 2018-03-09 05:56:07 +00:00
scripts Update copyright years. 2018-01-03 11:03:58 +01:00
src Fix handling of an empty filename at end of a path 2018-05-23 17:11:06 +01:00
testsuite Implement P0558R2 changes to std::atomic 2018-05-24 16:28:26 +01:00
acinclude.m4 PR libstdc++/84654 Disable __float128 specializations for -mno-float128 2018-05-01 23:47:33 +01:00
aclocal.m4
ChangeLog Implement P0558R2 changes to std::atomic 2018-05-24 16:28:26 +01:00
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-2016
ChangeLog-2017 Update copyright years. 2018-01-03 11:03:58 +01:00
config.h.in Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
configure Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
configure.ac Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
configure.host Separate Solaris/SPARC and x86 baselines 2017-02-02 16:24:03 +00:00
crossconfig.m4 Add support for opening file streams from wide character strings 2018-05-21 18:18:35 +01:00
fragment.am
linkage.m4
Makefile.am Update copyright years. 2018-01-03 11:03:58 +01:00
Makefile.in Enable building libstdc++-v3 with Intel CET 2017-11-17 22:28:10 +01:00
README

file: libstdc++-v3/README

New users may wish to point their web browsers to the file
index.html in the 'doc/html' subdirectory.  It contains brief
building instructions and notes on how to configure the library in
interesting ways.