Commit Graph

9142 Commits

Author SHA1 Message Date
Jennifer Yao 23c64853c8 More fine-grained autoconf checks for C99 library
2015-11-13  Jennifer Yao  <jenny.hyphen.fa@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/58393
	PR libstdc++/61580
	* acinclude.m4 (GLIBCXX_ENABLE_C99): Perform tests twice, with
	-std=c++11 as well as -std=c++98, and define separate macros for each.
	Cache the results of checking for complex math and wide character
	functions. Reformat for readability.
	* config.h.in: Regenerate.
	* include/bits/c++config: Define _GLIBCXX_USE_C99_XXX macros to
	either _GLIBCXX98_USE_C99_XXX or _GLIBCXX11_USE_C99_XXX according to
	language standard in use.
	* config/locale/dragonfly/c_locale.h (std::__convert_from_v): Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
	* config/locale/generic/c_locale.h (std::__convert_from_v): Likewise.
	* config/locale/gnu/c_locale.h (std::__convert_from_v): Likewise.
	* config/os/bsd/dragonfly/os_defines.h: Define _GLIBCXX_USE_C99_STDIO,
	_GLIBCXX_USE_C99_STDLIB, and _GLIBCXX_USE_C99_WCHAR.
	* configure: Regenerate.
	* include/bits/basic_string.h: Make numeric conversion functions
	depend on _GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, or
	_GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99.
	* include/ext/vstring.h: Likewise.
	* include/bits/locale_facets.tcc (std::num_put::_M_insert_float):
	Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
	* include/bits/locale_facets_nonio.tcc (std::money_put::do_put):
	Likewise.
	* include/c_compatibility/math.h: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_MATH.
	* include/c_compatibility/wchar.h: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_WCHAR.
	* include/c_global/cstdio: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDIO.
	* include/c_global/cstdlib: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDLIB.
	* include/c_global/cwchar: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_WCHAR.
	* include/c_std/cstdio: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDIO.
	* include/c_std/cstdlib: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDLIB.
	* include/c_std/cwchar: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_WCHAR.
	* include/tr1/cstdio: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDIO.
	* include/tr1/cstdlib: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDLIB.
	* include/tr1/cwchar: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_WCHAR.
	* include/tr1/stdlib.h: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDLIB.
	* src/c++98/locale_facets.cc (std::__num_base::_S_format_float):
	Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
	* testsuite/18_support/exception_ptr/60612-terminate.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
	* testsuite/18_support/exception_ptr/60612-unexpected.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
	(test01): Replace _GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stof.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stoi.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stol.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stold.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stoll.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stoul.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	stoull.cc: Likewise.
	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/
	to_wstring.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/13943.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
	* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise.
	* testsuite/lib/libstdc++.exp (check_v3_target_string_conversions):
	Change preprocessor #if conditional so that it uses
	_GLIBCXX_USE_C99_STDIO, _GLIBCXX_USE_C99_STDLIB, and
	_GLIBCXX_USE_C99_WCHAR, instead of _GLIBCXX_USE_C99.
	* testsuite/tr1/8_c_compatibility/cmath/templates.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_MATH.
	* testsuite/tr1/8_c_compatibility/cstdio/functions.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDIO.
	* testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_STDLIB.
	* testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Likewise.
	* testsuite/tr1/8_c_compatibility/cwchar/functions.cc: Replace
	_GLIBCXX_USE_C99 with _GLIBCXX_USE_C99_WCHAR.
	* testsuite/util/testsuite_fs.h: Replace _GLIBCXX_USE_C99 with
	_GLIBCXX_USE_C99_STDIO.

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

From-SVN: r230324
2015-11-13 14:51:25 +00:00
Jonathan Wakely 011b25e4f5 * include/experimental/bits/shared_ptr.h: Tweak comments.
From-SVN: r230306
2015-11-13 11:30:30 +00:00
Fan You 930d560203 Implement std::experimental::shared_ptr with array support
2015-11-13  Fan You  <youfan.noey@gmail.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/experimental/bits/shared_ptr.h: New.
	* include/experimental/memory: Include new header.
	* testsuite/experimental/memory/shared_ptr/assign/assign.cc: New.
	* testsuite/experimental/memory/shared_ptr/cast/cast.cc: New.
	* testsuite/experimental/memory/shared_ptr/comparison/comparison.cc:
	New.
	* testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc:
	New.
	* testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc: New.
	* testsuite/experimental/memory/shared_ptr/dest/dest.cc: New.
	* testsuite/experimental/memory/shared_ptr/modifiers/reset.cc: New.
	* testsuite/experimental/memory/shared_ptr/modifiers/swap.cc: New.
	* testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc:
	New.
	* testsuite/experimental/memory/shared_ptr/observers/operators.cc:
	New.
	* testsuite/experimental/memory/shared_ptr/observers/owner_before.cc:
	New.
	* testsuite/experimental/memory/shared_ptr/observers/use_count.cc: New.

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

From-SVN: r230300
2015-11-13 11:05:28 +00:00
Jonathan Wakely 8014404589 Define alias templates using polymorphic memory resources
* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/experimental/memory_resource: Add feature-test macro.
	* include/experimental/regex: New.
	* include/experimental/deque: Add alias template using PMR.
	* include/experimental/forward_list: Likewise.
	* include/experimental/list: Likewise.
	* include/experimental/map: Likewise.
	* include/experimental/set: Likewise.
	* include/experimental/string: Likewise.
	* include/experimental/unordered_map: Likewise.
	* include/experimental/unordered_set: Likewise.
	* include/experimental/vector: Likewise.

From-SVN: r230295
2015-11-13 10:01:05 +00:00
Fan You bfeffbd1ae Implement C++ LFTSv1 polymorphic memory resources
2015-11-13  Fan You  <youfan.noey@gmail.com>

	* include/Makefile.am: Add new headers.
	* include/Makefile.in: Regenerate.
	* include/bits/uses_allocator.h (__erased_type): Define.
	(__uses_allocator_helper): Check for __erased_type.
	* include/experimental/memory_resource: New.
	* include/experimental/utlity: New.
	* testsuite/experimental/type_erased_allocator/1.cc: New.
	* testsuite/experimental/type_erased_allocator/1_neg.cc: New.
	* testsuite/experimental/type_erased_allocator/2.cc: New.
	* testsuite/experimental/type_erased_allocator/uses_allocator.cc: New.

From-SVN: r230294
2015-11-13 10:00:59 +00:00
Jonathan Wakely fbfae2f089 Extend valid values of iostream bitmask types
PR libstdc++/56158
	* include/bits/ios_base.h (_Ios_Fmtflags, _Ios_Openmode, _Ios_Iostate):
	Define enumerators to ensure all values of type int are valid values
	of the enumeration type.
	* testsuite/27_io/ios_base/types/fmtflags/case_label.cc: Add new cases.
	* testsuite/27_io/ios_base/types/iostate/case_label.cc: Likewise.
	* testsuite/27_io/ios_base/types/openmode/case_label.cc: Likewise.

From-SVN: r230267
2015-11-12 17:08:42 +00:00
Jonathan Wakely f022ab0310 * include/std/thread: Include <cerrno> for EINTR.
From-SVN: r230266
2015-11-12 16:13:06 +00:00
Ville Voutilainen c3a6648b1c Implement D0013R2, logical type traits.
2015-11-12  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement D0013R2, logical type traits.

	/libstdc++-v3
	* include/experimental/type_traits (conjunction_v, disjunction_v,
	negation_v): New.
	* include/std/type_traits (conjunction, disjunction, negation):
	Likewise.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/experimental/type_traits/value.cc: Likewise.
	* testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc: New.
	* testsuite/20_util/logical_traits/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/logical_traits/value.cc: Likewise.

	/testsuite
	* g++.dg/cpp0x/Wattributes1.C: Adjust.

From-SVN: r230258
2015-11-12 15:56:31 +02:00
Jonathan Wakely 53dc6fb862 * include/experimental/bits/string_view.tcc: Fix doxygen @file.
From-SVN: r230221
2015-11-12 10:08:49 +00:00
Jonathan Wakely c5bd8d521a * libsupc++/new_handler.cc: Fix for explicit constructor change.
From-SVN: r230184
2015-11-11 17:29:39 +00:00
Jonathan Wakely f55e699d3d Loop in std::this_thread sleep functions
PR libstdc++/60421
	* include/std/thread (this_thread::sleep_for): Retry on EINTR.
	(this_thread::sleep_until): Retry if time not reached.
	* src/c++11/thread.cc (__sleep_for): Retry on EINTR.
	* testsuite/30_threads/this_thread/60421.cc: Test interruption and
	non-steady clocks.

From-SVN: r230183
2015-11-11 17:08:51 +00:00
Ville Voutilainen e3907f12a5 Correct the Changelog date of the previous commit.
From-SVN: r230177
2015-11-11 16:56:17 +02:00
Ville Voutilainen 269fa2a91b LWG 2510, make the default constructors of library tag types explicit.
2015-11-10  Ville Voutilainen  <ville.voutilainen@gmail.com>

	LWG 2510, make the default constructors of library tag types
	explicit.
	* include/bits/mutex.h (defer_lock_t, try_lock_t,
	adopt_lock_t): Add an explicit default constructor.
	* include/bits/stl_pair.h (piecewise_construct_t): Likewise.
	* include/bits/uses_allocator.h (allocator_arg_t): Likewise.
	* libsupc++/new (nothrow_t): Likewise.
	* testsuite/17_intro/tag_type_explicit_ctor.cc: New.

From-SVN: r230175
2015-11-11 16:47:19 +02:00
Jonathan Wakely 832ca6ac72 re PR libstdc++/64651 (std::rethrow_exception not found by ADL)
PR libstdc++/64651
	* libsupc++/exception_ptr.h (rethrow_exception): Add using-declaration
	to __exception_ptr namespace.
	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test ADL.
	Remove unnecessary test variables.

From-SVN: r230147
2015-11-11 10:08:23 +00:00
Jonathan Wakely d4a9dffbaa Fix return type of heterogeneous find for sets
PR libstdc++/68190
	* include/bits/stl_multiset.h (multiset::find): Fix return types.
	* include/bits/stl_set.h (set::find): Likewise.
	* testsuite/23_containers/map/operations/2.cc: Test find return types.
	* testsuite/23_containers/multimap/operations/2.cc: Likewise.
	* testsuite/23_containers/multiset/operations/2.cc: Likewise.
	* testsuite/23_containers/set/operations/2.cc: Likewise.

From-SVN: r230113
2015-11-10 15:12:24 +00:00
Jonathan Wakely 60baa1883c Update C++17 library implementation status
* doc/xml/manual/status_cxx2017.xml: Update.
	* doc/html/*: Regenerate.

From-SVN: r230108
2015-11-10 14:05:01 +00:00
Jonathan Wakely fb9333352b * include/bits/functional_hash.h: Fix grammar in comment.
From-SVN: r230097
2015-11-10 11:12:33 +00:00
François Dumont ec494945a9 2015-11-09 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_algo.h
	(partial_sort_copy): Instantiate std::iterator_traits only if concept
	checks.
	(lower_bound): Likewise.
	(upper_bound): Likewise.
	(equal_range): Likewise.
	(binary_search): Likewise.
	* include/bits/stl_heap.h (pop_heap): Likewise.

From-SVN: r230052
2015-11-09 21:10:18 +00:00
Kai Tietz 277ec793cb * testsuite/26_numerics/complex/requirements/constexpr.cc
* testsuite/26_numerics/complex/requirements/constexpr_functions.cc:
	Use constexpr where needed.

From-SVN: r229883
2015-11-06 14:43:33 -05:00
David Malcolm 9a4bbd5dd2 libstdc++v3: Explicitly disable carets and colorization within testsuite
libstdc++-v3/ChangeLog:
	* testsuite/lib/libstdc++.exp (v3_target_compile): Add
	-fno-diagnostics-show-caret -fdiagnostics-color=never to
	option's additional_flags.

From-SVN: r229876
2015-11-06 18:44:05 +00:00
Jason Merrill 34148d68c7 * libsupc++/new: Declare sized deletes.
From-SVN: r229713
2015-11-03 11:43:54 -05:00
Paolo Carlini 32fec2c8a2 2015-11-03 Paolo Carlini <paolo.carlini@oracle.com>
* Wrap ChangeLog entries to 80 columns.

From-SVN: r229707
2015-11-03 13:41:23 +00:00
Ville Voutilainen f763219373 Make the default constructors of tuple and pair conditionally explicit.
2015-11-03  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Make the default constructors of tuple and pair conditionally explicit.
	* include/std/type_traits (is_unsigned, __is_array_unknown_bounds,
	__is_default_constructible_atom, __is_default_constructible_safe,
	__is_direct_constructible_new_safe, __is_direct_constructible_ref_cast,
	__is_nt_default_constructible_impl, is_nothrow_default_constructible,
	is_nothrow_constructible, is_nothrow_assignable,
	is_trivially_constructible, is_trivially_copy_constructible,
	is_trivially_move_constructible, is_trivially_assignable,
	is_trivially_copy_assignable, is_trivially_move_assignable,
	is_trivially_destructible): Simplify.
	* include/std/type_traits (
	__do_is_implicitly_default_constructible_impl,
	__is_implicitly_default_constructible_impl,
	__is_implicitly_default_constructible_safe,
	__is_implicitly_default_constructible): New.
	* include/bits/stl_pair.h (pair::pair()): Use it.
	* include/std/tuple (tuple<_T1, _T2>::tuple): Use it.
	* include/std/tuple (_ImplicitlyDefaultConstructibleTuple): New.
	* include/std/tuple (tuple<_Types...>::tuple()): Use it.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
	* testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc: New.
	* testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_implicitly_default_constructible/value.cc: Likewise.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise.
	* testsuite/20_util/pair/cons/explicit_construct.cc: Likewise.
	* testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.

From-SVN: r229699
2015-11-03 10:41:40 +02:00
Jonathan Wakely 93e954005f Implement C++17 std::invoke and LWG DR 2219
* include/std/functional (__invoke_impl): New overloads.
	(__invoke): Replace with a single function calling __invoke_impl.
	(invoke): Add C++17 std::invoke.
	(reference_wrapper::operator()): Qualify call to __invoke.
	(_Mem_fn_traits_base, _Mem_fn_traits): Remove unused typedefs.
	(_Mem_fn_base): Remove unused typedefs and implement call operator in
	terms of __invoke.
	* include/std/future (__future_base::_Async_state_commonV2): Do not
	pass reference_wrapper as object argument to call_once.
	* include/std/type_traits (result_of): Define nested __invoke_type.
	Handle reference_wrapper as per LWG 2219.
	* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error directives.
	* testsuite/20_util/function_objects/mem_fn/55463.cc: Remove tests
	using member functions of reference_wrapper.

From-SVN: r229290
2015-10-25 01:00:54 +01:00
Jonathan Wakely 6fbd598400 Return deferred future if thread cannot be run
* include/std/future (async): Use deferred function on exception.
	* testsuite/30_threads/async/except.cc: New.

From-SVN: r229289
2015-10-24 22:36:50 +01:00
Jonathan Wakely f9badf7134 * include/std/type_traits (__cpp_lib_bool_constant): Define.
From-SVN: r229152
2015-10-21 22:20:25 +01:00
Jonathan Wakely fe29811c31 Document options for Filesystem TS library
* doc/xml/manual/configure.xml: Document
	--enable-libstdcxx-filesystem-ts option.
	* doc/xml/manual/status_cxx2014.xml: Document libstdc++fs.a.
	* doc/xml/manual/using.xml: Likewise.
	* doc/html/*: Regenerate.

From-SVN: r228914
2015-10-16 14:55:12 +01:00
Aurelio Remonda 6b6254db8a Shrink std::random_shuffle test to pass on simulators
2015-10-16  Aurelio Remonda  <aurelio.remonda@tallertechnologies.com>

	* testsuite/25_algorithms/random_shuffle/moveable.cc: Change variable
	N from const int N = 200000 to const unsigned int N = 10000.
	Delete useless fill_ascending function call.

From-SVN: r228876
2015-10-16 12:12:15 +01:00
Szabolcs Nagy 750002e0ee mark libstdc++ tests unsupported if they fail with "relocation truncated"
* testsuite/lib/libstdc++.exp (libstdc++-dg-test): Check for
	unsupported compiler output.

From-SVN: r228844
2015-10-15 15:15:37 +00:00
Nathan Froyd 141aa58b53 opt_random.h: Include pmmintrin.h instead of x86intrin.h, and only do so when __SSE3__
* config/cpu/i486/opt/bits/opt_random.h: Include pmmintrin.h instead
	of x86intrin.h, and only do so when __SSE3__
	* include/ext/random: Include emmintrin.h instead of x86intrin.h

From-SVN: r228786
2015-10-13 20:55:44 +00:00
Joseph Myers 3c97fe777c Test for __cxa_thread_atexit_impl when cross-compiling libstdc++ for GNU targets.
I noticed that when testing glibc with a cross compiler I got

UNSUPPORTED: nptl/tst-thread_local1

because the libstdc++-v3 configuration for cross compiling defaulted
to __cxa_thread_atexit_impl not being available.  This patch fixes
GLIBCXX_CROSSCONFIG to run the same test (for the case covering
targets with glibc) for __cxa_thread_atexit_impl as for native
compilation, just as it runs most of the other tests done for native
compilation (for these targets, it's not possible to build libstdc++
without already having built libc, so link tests are OK).

Tested with no regressions for cross to arm-none-linux-gnueabi.

	* crossconfig.m4 (GLIBCXX_CROSSCONFIG) <*-linux* | *-uclinux* |
	*-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu | *-cygwin*>: Check for
	__cxa_thread_atexit_impl.
	* configure: Regenerate.

From-SVN: r228695
2015-10-11 23:34:28 +01:00
Jonathan Wakely 7b5fde8304 Missed ChangeLog for previous libstdc++-v3 commit
Add include/experimental/bits dir

	* include/experimental/erase_if.h: Move to ...
	* include/experimental/bits/erase_if.h: New.
	* include/experimental/fs_dir.h: Move to ...
	* include/experimental/bits/fs_dir.h: New.
	* include/experimental/fs_fwd.h: Move to ...
	* include/experimental/bits/fs_fwd.h: New.
	* include/experimental/fs_ops.h: Move to ...
	* include/experimental/bits/fs_ops.h: New.
	* include/experimental/fs_path.h: Move to ...
	* include/experimental/bits/fs_path.h: New.
	* include/experimental/string_view.tcc: Move to ...
	* include/experimental/bits/string_view.tcc: New.
	* include/Makefile.am: Add include/experimental/bits sub-directory.
	* include/Makefile.in: Regenerate.
	* include/experimental/filesystem: Adjust includes.
	* include/experimental/map: Likewise.
	* include/experimental/set: Likewise.
	* include/experimental/string_view: Likewise.
	* include/experimental/unordered_map: Likewise.
	* include/experimental/unordered_set: Likewise.

From-SVN: r228646
2015-10-09 12:19:04 +01:00
Jonathan Wakely ea4554eaea Add include/experimental/bits dir
From-SVN: r228645
2015-10-09 12:11:54 +01:00
Ville Voutilainen 057ce49719 re PR c++/67844 (Cannot make tuple of class with template constructor)
2015-10-05  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR 67844.
	* include/std/tuple (_TC::_NonNestedTuple): Eagerly reject
	conversions from tuple types same as the target tuple.
	* testsuite/20_util/tuple/67844.cc: New.
	* testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Add
	a missing copyright header.

From-SVN: r228468
2015-10-05 12:57:20 +03:00
Jason Merrill b8fd7909c0 Implement N4514, C++ Extensions for Transactional Memory.
gcc/
	* builtins.def (BUILT_IN_ABORT): Add transaction_pure attribute.
gcc/c-family/
	* c-common.c (c_common_reswords): Add C++ TM TS keywords.
	(c_common_attribute_table): Add transaction_safe_dynamic.
	transaction_safe now affects type identity.
	(handle_tm_attribute): Handle transaction_safe_dynamic.
	* c-common.h (enum rid): Add RID_ATOMIC_NOEXCEPT,
	RID_ATOMIC_CANCEL, RID_SYNCHRONIZED.
	(OBJC_IS_CXX_KEYWORD): Add RID_SYNCHRONIZED.
	(D_TRANSMEM): New.
	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_transactional_memory.
	* c-pretty-print.c (pp_c_attributes_display): Don't print
	transaction_safe in C++.
gcc/c/
	* c-parser.c (c_lex_one_token): Handle @synchronized.
	* c-decl.c (match_builtin_function_types): A declaration of a built-in
	can change whether the function is transaction_safe.
gcc/cp/
	* cp-tree.h (struct cp_declarator): Add tx_qualifier field.
	(BCS_NORMAL, BCS_TRANSACTION): New enumerators.
	* lex.c (init_reswords): Limit TM kewords to -fgnu-tm.
	* parser.c (cp_lexer_get_preprocessor_token): Fix @synchronized.
	(make_call_declarator): Take tx_qualifier.
	(cp_parser_tx_qualifier_opt): New.
	(cp_parser_lambda_declarator_opt): Use it.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_statement): Handle atomic_noexcept, atomic_cancel.
	(cp_parser_compound_statement): Change in_try parameter to bcs_flags.
	(cp_parser_std_attribute): Map optimize_for_synchronized to
	transaction_callable.
	(cp_parser_transaction): Take the token.  Handle atomic_noexcept.
	* lambda.c (maybe_add_lambda_conv_op): Handle transaction-safety.
	* call.c (enum conversion_kind): Add ck_tsafe.
	(standard_conversion): Handle transaction-safety conversion.
	(convert_like_real, resolve_address_of_overloaded_function): Likewise.
	(check_methods): Diagnose transaction_safe_dynamic on non-virtual
	function.
	(look_for_tm_attr_overrides): Don't inherit transaction_safe_dynamic.
	* cvt.c (tx_safe_fn_type_p, tx_unsafe_fn_variant)
	(can_convert_tx_safety): New.
	* typeck.c (composite_pointer_type): Handle transaction-safety.
	* name-lookup.h (enum scope_kind): Add sk_transaction.
	* name-lookup.c (begin_scope): Handle it.
	* semantics.c (begin_compound_stmt): Pass it.
	* decl.c (check_previous_goto_1): Check it.
	(struct named_label_entry): Add in_transaction_scope.
	(poplevel_named_label_1): Set it.
	(check_goto): Check it.
	(duplicate_decls): A specialization can be transaction_safe
	independently of its template.
	(grokdeclarator): Handle tx-qualifier.
	* rtti.c (ptr_initializer): Handle transaction-safe.
	* search.c (check_final_overrider): Check transaction_safe_dynamic.
	Don't check transaction_safe.
	* mangle.c (write_function_type): Mangle transaction_safe here.
	(write_CV_qualifiers_for_type): Not here.
	(write_type): Preserve transaction_safe when stripping attributes.
	* error.c (dump_type_suffix): Print transaction_safe.
libiberty/
	* cp-demangle.c (d_cv_qualifiers): Dx means transaction_safe.
	(cplus_demangle_type): Let d_cv_qualifiers handle it.
	(d_dump, d_make_comp, has_return_type, d_encoding)
	(d_count_templates_scopes, d_print_comp_inner)
	(d_print_mod_list, d_print_mod, d_print_function_type)
	(is_ctor_or_dtor): Handle DEMANGLE_COMPONENT_TRANSACTION_SAFE.

From-SVN: r228462
2015-10-04 15:17:19 -04:00
Jonathan Wakely acfdd51fc8 Remove pretty printing for 'any' with allocators
* python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Remove support
	for _Manager_alloc.

From-SVN: r228447
2015-10-03 13:09:36 +01:00
Jonathan Wakely f4cfe221bf Fix comments saying why headers are included
* src/c++98/locale.cc: Fix comment.
	* src/c++98/locale_init.cc: Likewise.

From-SVN: r228446
2015-10-03 13:09:31 +01:00
Jonathan Wakely 1ca9de5126 Fix testsuite failures with --disable-wchar_t
* testsuite/21_strings/basic_string/literals/types.cc: Guard use of
	wchar_t with _GLIBCXX_USE_WCHAR_T.
	* testsuite/21_strings/basic_string/literals/values.cc: Likewise.
	* testsuite/21_strings/basic_string/requirements/citerators.cc:
	Likewise.
	* testsuite/22_locale/messages/13631.cc: Likewise.
	* testsuite/experimental/string_view/literals/types.cc: Likewise.
	* testsuite/experimental/string_view/literals/values.cc: Likewise.

From-SVN: r228439
2015-10-03 00:43:17 +01:00
Jonathan Wakely 8b75621078 Enable dual ABI for Filesystem library
* src/filesystem/Makefile.am: Add cxx11_abi_sources.
	* src/filesystem/Makefile.in: Regenerate.
	* src/filesystem/cow-dir.cc: New.
	* src/filesystem/cow-ops.cc: New.
	* src/filesystem/cow-path.cc: New.
	* src/filesystem/dir.cc: Define macro for new ABI.
	* src/filesystem/ops.cc: Likewise.
	* src/filesystem/path.cc: Likewise.

From-SVN: r228437
2015-10-03 00:21:41 +01:00
Jonathan Wakely ee216d80a5 minimal.cc: Minor tweaks to match narrow char version.
* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
	Minor tweaks to match narrow char version.

From-SVN: r228436
2015-10-02 23:18:06 +01:00
Jonathan Wakely c980d0b4b7 Fix tests that fail with old std::string
* testsuite/21_strings/basic_string/allocator/char/minimal.cc: Guard
	explicit instantiation with check for new ABI.
	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc:
	Likewise. Use wchar_t as char_type.

From-SVN: r228435
2015-10-02 23:13:18 +01:00
Jonathan Wakely 783aa06e9b Use noexcept instead of _GLIBCXX_NOEXCEPT
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::front() const, basic_string::back() const): Use
	noexcept instead of _GLIBCXX_NOEXCEPT macro.
	(__versa_string::front, __versa_string::back): Likewise.

From-SVN: r228434
2015-10-02 23:13:12 +01:00
Jonathan Wakely 38cccb0b7e * acinclude.m4 (GLIBCXX_ENABLE_DEBUG_FLAGS): Fix comment.
From-SVN: r228433
2015-10-02 22:47:38 +01:00
Jonathan Wakely 7fcdbdd21d Allow Filesystem TS to compile without wchar_t
* include/bits/locale_conv.h [!_GLIBCXX_USE_WCHAR_T]
	(__do_str_codecvt, __str_codecvt_in, __str_codecvt_out): Enable.
	* include/experimental/fs_path.h [!_GLIBCXX_USE_WCHAR_T]
	(path::wstring, path::generic_wstring): Disable.
	* src/filesystem/path.cc (path::_S_convert_loc)
	[!_GLIBCXX_USE_WCHAR_T]: Skip conversion.
	* testsuite/experimental/filesystem/path/assign/assign.cc: Check for
	wchar_t support.
	* testsuite/experimental/filesystem/path/concat/strings.cc: Likewise.
	* testsuite/experimental/filesystem/path/construct/range.cc: Likewise.

From-SVN: r228417
2015-10-02 20:38:38 +01:00
Jonathan Wakely 43222a5ec8 testsuite_fs.h (nonexistent_path): Use less generic name for paths.
* testsuite/util/testsuite_fs.h (nonexistent_path): Use less generic
	name for paths. Prefer snprintf to sprintf.

From-SVN: r228416
2015-10-02 20:38:27 +01:00
Jonathan Wakely 7b65155f1c PR libstdc++/67747 use readdir instead of readdir_r
PR libstdc++/67747
	* src/filesystem/dir.cc (native_readdir): Remove.
	(_Dir::advance): Use readdir instead of native_readdir.
	(recursive_directory_iterator(const path&, directory_options,
	error_code*)): Use swap instead of reset.

From-SVN: r228404
2015-10-02 17:34:34 +01:00
Jonathan Wakely 7b8089a3c6 * doc/html/manual/errno.html: Add new file.
From-SVN: r228348
2015-10-01 17:02:54 +01:00
Jonathan Wakely f14decafae Save-and-restore errno more carefully in libstdc++
* doc/xml/manual/diagnostics.xml: Document use of errno.
	* doc/html/*: Regenerate.
	* config/locale/generic/c_locale.cc (_Save_errno): New helper.
	(__convert_to_v): Use _Save_errno.
	* include/ext/string_conversions.h (__stoa): Only restore errno when
	it isn't set to non-zero.

From-SVN: r228328
2015-10-01 12:23:39 +01:00
François Dumont 9702ee6a6f messages_members.cc (Catalog_info, Catalogs): Move...
2015-09-30  François Dumont  <fdumont@gcc.gnu.org>
	    Jonathan Wakely  <jwakely@redhat.com>

	* config/locale/gnu/messages_members.cc (Catalog_info, Catalogs):
	Move...
	* config/locale/gnu/c++locale_internal.h: ...here in std namespace.
	* config/locale/gnu/c_locale.cc: Move implementation of latter here.
	* src/c++98/Makefile.am: Compile c++locale.cc with -fimplicit-templates.
	* src/c++98/Makefile.in: Regenerate.
	* config/abi/pre/gnu.ver: Adjust.

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

From-SVN: r228305
2015-09-30 20:04:43 +00:00
Matthias Klose eea10f8c50 alpha, ia64: Remove empty directories.
2015-09-30  Matthias Klose  <doko@ubuntu.com>

        * config/cpu/alpha, config/cpu/ia64: Remove empty directories.

From-SVN: r228291
2015-09-30 12:55:05 +00:00
Jonathan Wakely 6d60110654 Leave errno unchanged by successful std::stoi etc
* include/ext/string_conversions.h (__stoa): Save and restore errno.
	* testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc:
	New.

From-SVN: r228249
2015-09-29 16:15:39 +01:00
Jonathan Wakely b59882293f PR libstdc++/67583 Fix invalid sputn calls in tests
PR libstdc++/67583
	* testsuite/27_io/basic_stringbuf/seekoff/char/1.cc: Fix sputn call
	with mismatched arguments.
	* testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc: Likewise.

From-SVN: r228245
2015-09-29 14:31:51 +01:00
Jonathan Wakely ce535a9685 Reduce space and time overhead of std::thread
PR libstdc++/65393
	* config/abi/pre/gnu.ver: Export new symbols.
	* include/std/thread (thread::_State, thread::_State_impl): New types.
	(thread::_M_start_thread): Add overload taking unique_ptr<_State>.
	(thread::_M_make_routine): Remove.
	(thread::_S_make_state): Add.
	(thread::_Impl_base, thread::_Impl, thread::_M_start_thread)
	[_GLIBCXX_THREAD_ABI_COMPAT] Only declare conditionally.
	* src/c++11/thread.cc (execute_native_thread_routine): Rename to
	execute_native_thread_routine_compat and re-define to use _State.
	(thread::_State::~_State()): Define.
	(thread::_M_make_thread): Define new overload.
	(thread::_M_make_thread) [_GLIBCXX_THREAD_ABI_COMPAT]: Only define old
	overloads conditionally.

From-SVN: r228242
2015-09-29 13:54:05 +01:00
Jonathan Wakely 80400b0477 LWG 2135: terminate() in condition_variable::wait()
* include/std/condition_variable (condition_variable::wait): Add
	noexcept.
	* src/c++11/condition_variable.cc (condition_variable::wait): Call
	std::terminate on error (DR 2135).

From-SVN: r228217
2015-09-28 19:44:40 +01:00
Ville Voutilainen 5e2f2cd584 Avoid creating dangling references in case of nested tuples
for tuple constructors that construct from other tuples.

2015-09-25  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Avoid creating dangling references in case of nested tuples
	for tuple constructors that construct from other tuples.
	* include/std/tuple (_TC::_NonNestedTuple): New.
	* include/std/tuple (tuple::_TNTC): New.
	* include/std/tuple (tuple(const tuple<_UElements...>&),
	tuple(tuple<_UElements...>&&): Use _TNTC.
	* testsuite/20_util/tuple/cons/nested_tuple_construct.cc: New.

From-SVN: r228134
2015-09-25 19:41:45 +03:00
Jonathan Wakely 9bc5028273 Leave moved-from std::deque in a valid state
PR libstdc++/67707
	* include/bits/stl_deque.h (_Deque_base::_M_move_impl): Initialize
	empty object.
	* testsuite/23_containers/deque/allocator/move.cc: Check moved-from
	deque.

From-SVN: r228090
2015-09-24 16:46:24 +01:00
Jonathan Wakely 07dc170b6f Limit number of symlinks that canonical() will resolve
* src/filesystem/ops.cc (canonical): Simplify error handling and
	limit number of symlinks that can be resolved.

From-SVN: r228043
2015-09-23 12:26:50 +01:00
Jonathan Wakely 429ee11aa3 Fix semantics of Filesystem TS directory iterators
[class.directory_iterator] p4 and [directory_iterator.members] p4
require that only the default constructor and ignored permission denied
errors can create the end iterator.

	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Remove _GLIBCXX_
	prefix from HAVE_STRUCT_DIRENT_D_TYPE.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* include/experimental/fs_dir.h (operator==, operator==):
	Use owner_before instead of pointer equality.
	(directory_iterator(std::shared_ptr<_Dir>, error_code*)): Remove.
	* src/filesystem/dir.cc (ErrorCode): Remove.
	(_Dir::advance): Change ErrorCode parameter to error_code*, add
	directory_options parameter and check it on error.
	(opendir): Rename to open_dir to avoid clashing with macro. Change
	ErrorCode parameter to error_code*.
	(make_shared_dir): Remove.
	(native_readdir) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Don't set errno.
	(directory_iterator(std::shared_ptr<_Dir>, error_code*)): Remove.
	(directory_iterator(const path&, directory_options, error_code*)):
	Pass options to _Dir::advance and create non-end iterator on error.
	(recursive_directory_iterator(const path&, directory_options,
	error_code*)): Clear error_code on ignored error, create non-end
	iterator otherwise.
	(recursive_directory_iterator::increment): Pass _M_options to
	_Dir::advance.
	(recursive_directory_iterator::pop): Likewise.
	* testsuite/experimental/filesystem/iterators/directory_iterator.cc:
	New.
	* testsuite/experimental/filesystem/iterators/
	recursive_directory_iterator.cc: New.

From-SVN: r228042
2015-09-23 12:26:45 +01:00
Jonathan Wakely 366703118c Fix filesystem::create_directories() function
* src/filesystem/ops.cc (is_dot, is_dotdot): Define new helpers.
	(create_directories): Fix error handling.
	* testsuite/experimental/filesystem/operations/create_directories.cc:
	New.

From-SVN: r228041
2015-09-23 12:25:59 +01:00
Jonathan Wakely 561cfdec25 Fix bootstrap error introduced in r227870
PR libstdc++/67647
	* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
	(basic_string::shrink_to_fit): Fix #endif placement.

From-SVN: r227966
2015-09-21 12:44:08 +01:00
Tim Shen 236d76c4a9 re PR libstdc++/67361 (std::regex_error::what() should say something about the error_code)
PR libstdc++/67361
	* include/bits/regex_error.h: Add __throw_regex_error that
	supports string.
	* include/bits/regex_automaton.h: Add more specific exception
	messages.
	* include/bits/regex_automaton.tcc: Likewise.
	* include/bits/regex_compiler.h: Likewise.
	* include/bits/regex_compiler.tcc: Likewise.
	* include/bits/regex_scanner.h: Likewise.
	* include/bits/regex_scanner.tcc: Likewise.

From-SVN: r227936
2015-09-19 20:56:27 +00:00
Jonathan Wakely 7215aaedd6 Fix errors due to extra includes in extc++.h
* include/precompiled/extc++.h: Fix bootstrap error due to
	unconditional inclusion of <ext/enc_filebuf.h>.
	* include/ext/random: Check for definition of UINT32_C.

From-SVN: r227902
2015-09-18 12:21:05 +01:00
Catherine Moore 05c0e3eb54 debug.cc: Include <cstdio>.
2015-09-17  Catherine Moore  <clm@codesourcery.com>

        * src/c++11/debug.cc: Include <cstdio>.

From-SVN: r227888
2015-09-17 19:16:53 -04:00
Gerald Pfeifer 0b546684ad Include <cerrno> in src/c++11/random.cc
2015-09-17  Gerald Pfeifer  <gerald@pfeifer.com>

	* src/c++11/random.cc: Include <cerrno>.

From-SVN: r227887
2015-09-17 22:28:00 +01:00
François Dumont 814e52ca21 2015-09-17 François Dumont <fdumont@gcc.gnu.org>
* include/debug/formatter.h
	(_Error_formatter::_Parameter::_M_print_field): Deprecate.
	(_Error_formatter::_Parameter::_M_print_description): Likewise.
	(_Error_formatter::_M_format_word): Likewise.
	(_Error_formatter::_M_print_word): Likewise.
	(_Error_formatter::_M_print_string): Likewise.
	(_Error_formatter::_M_get_max_length): Likewise.
	(_Error_formatter::_M_max_length): Delete.
	(_Error_formatter::_M_indent): Likewise.
	(_Error_formatter::_M_column): Likewise.
	(_Error_formatter::_M_first_line): Likewise.
	(_Error_formatter::_M_wordwrap): Likewise.
	* src/c++11/debug.cc: Adapt.

From-SVN: r227885
2015-09-17 19:23:26 +00:00
Jonathan Wakely 310055e7b4 Handle alignment in __atomic_is_lock_free
gcc:

2015-09-17  Richard Henderson  <rth@redhat.com>

	PR libstdc++/65913
	* builtins.c (fold_builtin_atomic_always_lock_free): Handle fake
	pointers that encode the alignment of the object.

libstdc++-v3:

2015-09-17  Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/65913
	* include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
	__atomic_base<_PTp*>::is_lock_free()): Call the built-in with the
	immediate pointer value, not a variable.
	* include/std/atomic (atomic<T>::is_lock_free()): Likewise.
	* testsuite/29_atomics/atomic/65913.cc: New.

From-SVN: r227878
2015-09-17 16:46:04 +01:00
Jonathan Wakely 01610fec49 Remove non-deterministic part of canonical() test
* testsuite/experimental/filesystem/operations/canonical.cc: Remove
	non-deterministic part of the test.

From-SVN: r227873
2015-09-17 16:33:20 +01:00
Jonathan Wakely a2b4d73daf Make std::random_device retry after short reads
PR libstdc++/65142
	* src/c++11/random.cc (random_device::_M_getval()): Retry after short
	reads.

From-SVN: r227872
2015-09-17 16:06:42 +01:00
Jonathan Wakely 2eb57e545b Remove redundant conditional expressions in <system_error>
* include/std/system_error (error_code::operator bool(),
	error_condition::operator bool()): Remove redundant conditional
	expression.

From-SVN: r227871
2015-09-17 15:56:50 +01:00
Jonathan Wakely 99f04955ed Only do shrink_to_fit() when exceptions enabled
* include/bits/allocator.h (__shrink_to_fit_aux<T, true>::_S_do_it):
	Do nothing if exceptions are disabled.
	* include/bits/basic_string.h (basic_string::shrink_to_fit): Likewise.

From-SVN: r227870
2015-09-17 15:56:46 +01:00
Jonathan Wakely 3036299861 Implement filesystem::canonical() without realpath
PR libstdc++/67173
	* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Check _XOPEN_VERSION
	and PATH_MAX for _GLIBCXX_USE_REALPATH.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* src/filesystem/ops.cc: (canonical) [!_GLIBCXX_USE_REALPATH]: Add
	alternative implementation.
	* testsuite/experimental/filesystem/operations/canonical.cc: New.
	* testsuite/experimental/filesystem/operations/exists.cc: Add more
	tests.
	* testsuite/experimental/filesystem/operations/absolute.cc: Add test
	variables.
	* testsuite/experimental/filesystem/operations/copy.cc: Likewise.
	* testsuite/experimental/filesystem/operations/current_path.cc:
	Likewise.
	* testsuite/experimental/filesystem/operations/file_size.cc: Likewise.
	* testsuite/experimental/filesystem/operations/status.cc: Likewise.
	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
	Likewise.

From-SVN: r227836
2015-09-16 23:50:28 +01:00
Jonathan Wakely 7c928f726d Fix filesystem::canonical on Solaris 10.
PR libstdc++/67173
	* src/filesystem/ops.cc (filesystem::canonical): Allocate buffer for
	realpath on Solaris 10.

From-SVN: r227689
2015-09-11 15:20:32 +01:00
Jonathan Wakely 42b6aad9ef Check read() result in std::random_device.
PR libstdc++/65142
	* src/c++11/random.cc (random_device::_M_getval()): Check read result.

From-SVN: r227687
2015-09-11 14:44:26 +01:00
John Marino 1b741475ff Fix invalid UTF-8 in wchar_t tests.
2015-09-11  John Marino  <gnugcc@marino.st>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/67096
	* testsuite/22_locale/codecvt/in/wchar_t/4.cc: Do not test code points
	above U+10FFFF.
	* testsuite/22_locale/codecvt/in/wchar_t/8.cc: Likewise.
	* testsuite/22_locale/codecvt/in/wchar_t/9.cc: Likewise.
	* testsuite/22_locale/codecvt/length/wchar_t/4.cc: Likewise.
	* testsuite/22_locale/codecvt/out/wchar_t/4.cc: Likewise.
	* testsuite/22_locale/codecvt/unshift/wchar_t/4.cc: Likewise.
	* testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc: Likewise.
	* testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc: Likewise.
	* testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc: Likewise.
	* testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/10.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/11.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/12.cc: Likewise.
	* testsuite/27_io/objects/wchar_t/13.cc: Likewise.

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

From-SVN: r227686
2015-09-11 14:06:42 +01:00
Jonathan Wakely f12ddb6249 Rationalise PCH headers and 17_intro/headers tests.
PR libstdc++/64857
	* doc/xml/manual/using.xml: Improve aggregate header documentation.
	* doc/html/manual/*: Regenerate.
	* include/precompiled/extc++.h: Include <bits/stdc++.h> for C++11
	and later and include more extension headers.
	* testsuite/17_intro/headers/c++1998/all_attributes.cc: Remove
	redundant header.
	* testsuite/17_intro/headers/c++200x/: Rename to c++2011.
	* testsuite/17_intro/headers/c++2014/all_attributes.cc: Remove
	redundant headers.
	* testsuite/17_intro/headers/c++2014/all_no_exceptions.cc: New.
	* testsuite/17_intro/headers/c++2014/all_no_rtti.cc: New.
	* testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc: New.
	* testsuite/17_intro/headers/c++2014/operator_names.cc: New.
	* testsuite/17_intro/headers/c++2014/stdc++.cc: New.
	* testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc:
	New.

From-SVN: r227684
2015-09-11 13:25:43 +01:00
Jonathan Wakely 5caff414f1 Implement N4258 noexcept for std::basic_string.
PR libstdc++/58265
	* doc/xml/manual/intro.xml: Document LWG 2063 and 2064 resolutions.
	* doc/html/manual/bugs.html: Regenerate.
	* include/bits/basic_string.h (basic_string): Implement N4258. Add
	correct exception-specifications and propagate allocators correctly.
	* include/bits/basic_string.tcc (basic_string::swap): Propagate
	allocators correctly.
	* include/debug/string (__gnu_debug::basic_string): Add correct
	exceptions-specifications and allcoator-extended constructors.
	* testsuite/21_strings/basic_string/allocator/char/copy.cc: New.
	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
	New.
	* testsuite/21_strings/basic_string/allocator/char/minimal.cc: New.
	* testsuite/21_strings/basic_string/allocator/char/move.cc: New.
	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc:
	New.
	* testsuite/21_strings/basic_string/allocator/char/noexcept.cc: New.
	* testsuite/21_strings/basic_string/allocator/char/swap.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
	New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc:
	New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc: New.
	* testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc: New.
	* testsuite/util/testsuite_allocator.h (tracker_allocator): Define
	defaulted assignment operators.

From-SVN: r227681
2015-09-11 12:02:14 +01:00
Jonathan Wakely 997ed914e2 Allocator-extended constructors for container adaptors.
PR libstdc++/65092
	* include/bits/stl_queue.h (queue, priority_queue): Add
	allocator-extended constructors.
	* include/bits/stl_stack.h (stack): Likewise.
	* testsuite/23_containers/priority_queue/requirements/
	uses_allocator.cc: Test allocator-extended constructors.
	* testsuite/23_containers/queue/requirements/uses_allocator.cc:
	Likewise.
	* testsuite/23_containers/stack/requirements/uses_allocator.cc:
	Likewise.

From-SVN: r227680
2015-09-11 10:51:29 +01:00
Jonathan Wakely a789097385 * testsuite/util/testsuite_allocator.h (PointerBase::operator[]): Add.
From-SVN: r227661
2015-09-10 20:33:09 +01:00
Jonathan Wakely 94eb2ddbf0 1.cc: Verify the string contents.
* testsuite/21_strings/basic_string/operators/char/1.cc: Verify the
	string contents.

From-SVN: r227660
2015-09-10 20:33:04 +01:00
Jonathan Wakely 2f1e8e7c47 Enable lightweight checks with _GLIBCXX_ASSERTIONS.
* doc/xml/manual/using.xml (_GLIBCXX_ASSERTIONS): Document.
	* doc/html/manual/using_macros.html: Regenerate.
	* include/bits/c++config: Define _GLIBCXX_ASSERTIONS when
	_GLIBCXX_DEBUG is defined. Disable std::string extern templates when
	(_GLIBCXX_EXTERN_TEMPLATE, __glibcxx_assert): Depend on
	_GLIBCXX_ASSERTIONS instead of _GLIBCXX_DEBUG.
	* include/debug/debug.h [!_GLIBCXX_DEBUG]: Define
	__glibcxx_requires_non_empty_range and __glibcxx_requires_nonempty.
	* include/backward/auto_ptr.h (auto_ptr::operator*,
	auto_ptr::operator->): Replace _GLIBCXX_DEBUG_ASSERT with
	__glibcxx_assert.
	* include/bits/basic_string.h (basic_string::operator[],
	basic_string::front, basic_string::back, basic_string::pop_back):
	Likewise.
	* include/bits/random.h
	(uniform_int_distribution::param_type::param_type,
	uniform_real_distribution::param_type::param_type,
	normal_distribution::param_type::param_type,
	gamma_distribution::param_type::param_type,
	bernoulli_distribution::param_type::param_type,
	binomial_distribution::param_type::param_type,
	geometric_distribution::param_type::param_type,
	negative_binomial_distribution::param_type::param_type,
	poisson_distribution::param_type::param_type,
	exponential_distribution::param_type::param_type): Likewise.
	* include/bits/regex.h (match_results::operator[],
	match_results::prefix, match_results::suffix): Likewise.
	* include/bits/regex.tcc (format, regex_iterator::operator++):
	Likewise.
	* include/bits/regex_automaton.tcc (_StateSeq::_M_clone): Likewise.
	* include/bits/regex_compiler.tcc (_Compiler::_Compiler,
	_Compiler::_M_insert_character_class_matcher): Likewise.
	* include/bits/regex_executor.tcc (_Executor::_M_dfs): Likewise.
	* include/bits/regex_scanner.tcc (_Scanner::_M_advance,
	_Scanner::_M_scan_normal): Likewise.
	* include/bits/shared_ptr_base.h (__shared_ptr::_M_reset,
	__shared_ptr::operator*): Likewise.
	* include/bits/stl_iterator_base_funcs.h (__advance): Likewise.
	* include/bits/unique_ptr.h (unique_ptr::operator*,
	unique_ptr::operator[]): Likewise.
	* include/experimental/fs_path.h (path::path(string_type, _Type),
	path::iterator::operator++, path::iterator::operator--,
	path::iterator::operator*): Likewise.
	* include/experimental/string_view (basic_string_view::operator[],
	basic_string_view::front, basic_string_view::back,
	basic_string_view::remove_prefix): Likewise.
	* include/ext/random (beta_distribution::param_type::param_type,
	normal_mv_distribution::param_type::param_type,
	rice_distribution::param_type::param_type,
	pareto_distribution::param_type::param_type,
	k_distribution::param_type::param_type,
	arcsine_distribution::param_type::param_type,
	hoyt_distribution::param_type::param_type,
	triangular_distribution::param_type::param_type,
	von_mises_distribution::param_type::param_type,
	hypergeometric_distribution::param_type::param_type,
	logistic_distribution::param_type::param_type): Likewise.
	* include/ext/vstring.h (__versa_string::operator[]): Likewise.
	* include/std/complex (polar): Likewise.
	* include/std/mutex [!_GTHREAD_USE_MUTEX_TIMEDLOCK]
	(timed_mutex::~timed_mutex, timed_mutex::unlock,
	(recursive_timed_mutex::~timed_mutex, recursive_timed_mutex::unlock):
	Likewise.
	* include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER]
	(__shared_mutex_pthread::__shared_mutex_pthread,
	__shared_mutex_pthread::~__shared_mutex_pthread): Likewise.
	(__shared_mutex_pthread::lock, __shared_mutex_pthread::try_lock,
	__shared_mutex_pthread::unlock, __shared_mutex_pthread::lock_shared,
	__shared_mutex_pthread::try_lock_shared): Likewise.
	(__shared_mutex_cv::~__shared_mutex_cv, __shared_mutex_cv::unlock,
	__shared_mutex_cv::unlock_shared): Likewise.
	(shared_timed_mutex::try_lock_until,
	shared_timed_mutex::try_lock_shared_until): Likewise.
	* include/std/valarray (valarray::valarray(const _Tp*, size_t),
	valarray::operator=, valarray::sum, valarray::min, valarray::max,
	_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT, _DEFINE_BINARY_OPERATOR):
	Likewise.

From-SVN: r227595
2015-09-09 18:12:47 +01:00
Jonathan Wakely 93023f35f7 Relax Debug Mode assertions on operator-> for smart pointers.
* include/bits/shared_ptr_base.h (__shared_ptr::operator->): Change
	_GLIBCXX_DEBUG_ASSERT to _GLIBCXX_DEBUG_PEDASSERT.
	* include/bits/unique_ptr.h (unique_ptr::operator->): Likewise.
	* testsuite/20_util/shared_ptr/observers/get.cc: Test operator-> on
	empty shared_ptr.

From-SVN: r227524
2015-09-07 18:17:23 +01:00
Jonathan Wakely 12dee005f7 Avoid #ifdef _GLIBCXX_DEBUG in regex_compiler.h
* include/bits/regex_compiler.h (_BracketMatcher::_M_is_ready):
	Initialize using NSDMI and set using _GLIBCXX_DEBUG_ONLY.

From-SVN: r227521
2015-09-07 15:45:14 +01:00
Jonathan Wakely 2d5e3740fd Rename shadowed variable in libstdc++ test.
* testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Rename
	shadowed variable.

From-SVN: r227519
2015-09-07 12:33:20 +01:00
Jonathan Wakely d835619658 Enable timed mutex unlock tests on darwin.
* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Run on
	darwin.
	* testsuite/30_threads/timed_mutex/unlock/2.cc: Run on darwin.

From-SVN: r227518
2015-09-07 11:40:25 +01:00
Jonathan Wakely c79c59f024 fix darwin bootstrap errors due to <mutex>.
PR libstdc++/65704
	* include/std/mutex (recursive_timed_mutex): Fix uses of _Can_lock.

From-SVN: r227495
2015-09-04 17:09:05 +01:00
Jonathan Wakely f16081c2c6 Add portable timed_mutex and recursive_timed_mutex.
PR libstdc++/65704
	* include/Makefile.am: Add <bits/mutex.h>.
	* include/Makefile.in: Regenerate.
	* include/bits/mutex.h (__mutex_base, mutex, lock_guard, unique_lock):
	New file containing types moved from <mutex>.
	* include/std/condition_variable: Include <bits/mutex.h> instead of
	<mutex>.
	* include/std/mutex (__mutex_base, mutex, lock_guard, unique_lock):
	Move to <bits/mutex.h>.
	*  testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Remove
	dg-require-gthreads-timed.
	*  testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/dest/
	destructor_locked.cc: Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
	Likewise.
	*  testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/dest/destructor_locked.cc:
	Likewise.
	*  testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/requirements/standard_layout.cc:
	Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
	*  testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
	*  testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
	*  testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
	*  testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
	*  testsuite/30_threads/unique_lock/locking/4.cc: Likewise.

From-SVN: r227490
2015-09-04 12:23:44 +01:00
Edward Smith-Rowland 20b5f0b3e6 Add C++11 header <cuchar>.
2015-09-04  Edward Smith-Rowland  <3dw4rd@verizon.net>
	    Jonathan Wakely  <jwakely@redhat.com>

	* acinclude.m4 (GLIBCXX_CHECK_UCHAR_H): Define.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Check for <uchar.h>.
	* include/Makefile.am: Add new headers.
	* include/Makefile.in: Regenerate.
	* include/c/cuchar: New.
	* include/c_compatibility/uchar.h: New.
	* include/c_global/cuchar: New.
	* include/c_std/cuchar: New.
	* include/precompiled/stdc++.h: Include <cuchar>.
	* testsuite/17_intro/headers/c++200x/stdc++.cc: Include <uchar.h>.
	* testsuite/17_intro/headers/c++200x/stdc++_multiple_inclusion.cc:
	Include <uchar.h>.

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

From-SVN: r227488
2015-09-04 12:13:34 +01:00
Jonathan Wakely 57003677cf Make all <cxxx> headers include <bits/c++config.h>
PR libstdc++/65473
	* include/c/cassert: Include <bits/c++config.h>.
	* include/c/cerrno: Likewise.
	* include/c/cfloat: Likewise.
	* include/c/ciso646: Likewise.
	* include/c/climits: Likewise.
	* include/c_global/cassert: Likewise.
	* include/c_global/cerrno: Likewise.
	* include/c_global/cfloat: Likewise.
	* include/c_global/ciso646: Likewise.
	* include/c_global/climits: Likewise.
	* include/c_std/cassert: Likewise.
	* include/c_std/cerrno: Likewise.
	* include/c_std/cfloat: Likewise.
	* include/c_std/ciso646: Likewise.
	* include/c_std/climits: Likewise.

From-SVN: r227484
2015-09-04 10:16:29 +01:00
Jonathan Wakely c8c030589b Clean up libstdc++ includes slightly.
* include/bits/shared_ptr_base.h: Add required header.
	* include/std/condition_variable: Likewise.
	* include/std/mutex: Remove unused header.
	* include/std/shared_mutex: Remove redundant header.
	(shared_mutex::shared_mutex()): Replace throw with __throw_bad_alloc.

From-SVN: r227469
2015-09-03 21:40:03 +01:00
Jonathan Wakely 433f6725ca re PR libstdc++/66902 (_S_debug_messages is unneccessary public)
PR libstdc++/66902
	* src/c++11/debug.cc (_S_debug_messages): Make array const.

From-SVN: r227466
2015-09-03 20:05:15 +01:00
Jonathan Wakely eb8bf686b7 Make std::experimental::not_fn SFINAE-friendly.
PR libstdc++/66998
	* include/experimental/functional (_Not_fn): Add exception
	specifications and non-deduced return types.
	(not_fn): Add exception specification and wrap pointer-to-member.
	* testsuite/experimental/functional/not_fn.cc: Test in SFINAE context
	and test pointer-to-member.

From-SVN: r227448
2015-09-03 15:36:03 +01:00
Jonathan Wakely 500dc9a6c3 Add concept checks to std::next and std::prev.
PR libstdc++/62039
	* include/bits/stl_iterator_base_funcs.h (next, prev): Add concept
	checks.
	* testsuite/24_iterators/operations/prev_neg.cc: New.
	* testsuite/24_iterators/operations/next_neg.cc: New.

From-SVN: r227447
2015-09-03 15:35:43 +01:00
Sebastian Huber 37d13ae648 libstdc++: Run tests on RTEMS
libstdc++-v3/ChangeLog

	* testsuite/18_support/pthread_guard.cc: Add *-*-rtems* target
	selector to all lines which contain a *-*-cygwin target selector.
	* testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
	* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Likewise.
	* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
	* testsuite/21_strings/basic_string/pthread18185.cc: Likewise.
	* testsuite/21_strings/basic_string/pthread33394.cc: Likewise.
	* testsuite/21_strings/basic_string/pthread4.cc: Likewise.
	* testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise.
	* testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise.
	* testsuite/23_containers/list/pthread1.cc: Likewise.
	* testsuite/23_containers/list/pthread5.cc: Likewise.
	* testsuite/23_containers/map/pthread6.cc: Likewise.
	* testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise.
	* testsuite/27_io/basic_ofstream/pthread2.cc: Likewise.
	* testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise.
	* testsuite/30_threads/async/42819.cc: Likewise.
	* testsuite/30_threads/async/49668.cc: Likewise.
	* testsuite/30_threads/async/54297.cc: Likewise.
	* testsuite/30_threads/async/any.cc: Likewise.
	* testsuite/30_threads/async/async.cc: Likewise.
	* testsuite/30_threads/async/launch.cc: Likewise.
	* testsuite/30_threads/async/lwg2021.cc: Likewise.
	* testsuite/30_threads/async/sync.cc: Likewise.
	* testsuite/30_threads/call_once/39909.cc: Likewise.
	* testsuite/30_threads/call_once/49668.cc: Likewise.
	* testsuite/30_threads/call_once/60497.cc: Likewise.
	* testsuite/30_threads/call_once/call_once1.cc: Likewise.
	* testsuite/30_threads/condition_variable/54185.cc: Likewise.
	* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
	* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
	* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
	* testsuite/30_threads/condition_variable/members/3.cc: Likewise.
	* testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
	* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
	Likewise.
	* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
	* testsuite/30_threads/future/cons/move.cc: Likewise.
	* testsuite/30_threads/future/members/45133.cc: Likewise.
	* testsuite/30_threads/future/members/get.cc: Likewise.
	* testsuite/30_threads/future/members/get2.cc: Likewise.
	* testsuite/30_threads/future/members/share.cc: Likewise.
	* testsuite/30_threads/future/members/valid.cc: Likewise.
	* testsuite/30_threads/future/members/wait.cc: Likewise.
	* testsuite/30_threads/future/members/wait_for.cc: Likewise.
	* testsuite/30_threads/future/members/wait_until.cc: Likewise.
	* testsuite/30_threads/lock/1.cc: Likewise.
	* testsuite/30_threads/lock/2.cc: Likewise.
	* testsuite/30_threads/lock/3.cc: Likewise.
	* testsuite/30_threads/lock/4.cc: Likewise.
	* testsuite/30_threads/mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
	* testsuite/30_threads/mutex/lock/1.cc: Likewise.
	* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
	* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
	* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/mutex/unlock/2.cc: Likewise.
	* testsuite/30_threads/packaged_task/49668.cc: Likewise.
	* testsuite/30_threads/packaged_task/60564.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
	* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
	Likewise.
	* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
	* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
	* testsuite/30_threads/promise/60966.cc: Likewise.
	* testsuite/30_threads/promise/cons/1.cc: Likewise.
	* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
	* testsuite/30_threads/promise/cons/move.cc: Likewise.
	* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
	* testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
	* testsuite/30_threads/promise/members/get_future.cc: Likewise.
	* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
	* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
	* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
	* testsuite/30_threads/promise/members/set_value.cc: Likewise.
	* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
	* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
	* testsuite/30_threads/promise/members/swap.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
	Likewise.
	* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
	Likewise.
	* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
	Likewise.
	* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
	* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
	* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
	* testsuite/30_threads/shared_future/members/get.cc: Likewise.
	* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
	* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
	* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
	* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
	* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
	* testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
	* testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
	* testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
	* testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
	* testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
	* testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
	* testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
	* testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/this_thread/1.cc: Likewise.
	* testsuite/30_threads/this_thread/2.cc: Likewise.
	* testsuite/30_threads/this_thread/3.cc: Likewise.
	* testsuite/30_threads/this_thread/4.cc: Likewise.
	* testsuite/30_threads/thread/cons/1.cc: Likewise.
	* testsuite/30_threads/thread/cons/2.cc: Likewise.
	* testsuite/30_threads/thread/cons/3.cc: Likewise.
	* testsuite/30_threads/thread/cons/4.cc: Likewise.
	* testsuite/30_threads/thread/cons/49668.cc: Likewise.
	* testsuite/30_threads/thread/cons/5.cc: Likewise.
	* testsuite/30_threads/thread/cons/6.cc: Likewise.
	* testsuite/30_threads/thread/cons/7.cc: Likewise.
	* testsuite/30_threads/thread/cons/8.cc: Likewise.
	* testsuite/30_threads/thread/cons/9.cc: Likewise.
	* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
	* testsuite/30_threads/thread/members/1.cc: Likewise.
	* testsuite/30_threads/thread/members/2.cc: Likewise.
	* testsuite/30_threads/thread/members/3.cc: Likewise.
	* testsuite/30_threads/thread/members/4.cc: Likewise.
	* testsuite/30_threads/thread/members/5.cc: Likewise.
	* testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise.
	* testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
	* testsuite/30_threads/thread/swap/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
	* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
	* testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
	* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
	* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
	* testsuite/30_threads/try_lock/1.cc: Likewise.
	* testsuite/30_threads/try_lock/2.cc: Likewise.
	* testsuite/30_threads/try_lock/3.cc: Likewise.
	* testsuite/30_threads/try_lock/4.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
	* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
	* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
	* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
	* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
	* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
	* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
	* testsuite/ext/rope/pthread7-rope.cc: Likewise.
	* testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc:
	Likewise.
	* testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc:
	Likewise.

From-SVN: r227429
2015-09-03 05:45:33 +00:00
Dmitry Vyukov 710465235b libstdc++: fix data races in basic_string implementation
* include/bits/basic_string.h: Fix data races on _M_refcount.

From-SVN: r227403
2015-09-02 07:35:20 -07:00
Sebastian Huber d8e19f3114 re PR libstdc++/67408 (<mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types)
2015-09-02  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	PR libstdc++/67408
	* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Use
	_Derived::_M_timedlock().
	(timed_mutex): Add _M_timedlock() and make base class a friend.
	(recursive_timed_mutex): Likewise.

From-SVN: r227400
2015-09-02 11:51:14 +01:00
Tim Shen cae4063cea re PR libstdc++/67362 (std::regex("((.)", std::regex_constants::basic) throws)
PR libstdc++/67362
	* include/bits/regex_scanner.tcc (_Scanner<>::_M_scan_normal):
	Always returns ordinary char token if the char isn't
	considered a special char.
	* testsuite/28_regex/regression.cc: New test file for collecting
	regression testcases from, typically, bugzilla.

From-SVN: r227289
2015-08-28 02:35:21 +00:00
Jonathan Wakely e994d230f1 re PR libstdc++/67374 (std::cbegin can't call valarray range access functions)
PR libstdc++/67374
	* include/bits/range_access.h (valarray, begin, end): Declare.
	* testsuite/26_numerics/valarray/range_access.cc: Test const
	overloads.
	* testsuite/26_numerics/valarray/range_access2.cc: New.

From-SVN: r227274
2015-08-27 20:05:19 +01:00
John Marino a98e4e62c1 Provide nearly complete std::locale support for DragonFly
2015-08-27  John Marino  <gnugcc@marino.st>

	* acinclude.m4 (*-*-dragonfly*): Change 7 locale support files
	from generic to new DragonFly versions.
	* configure: Regenerate.
	* config/locale/dragonfly/c_locale.cc: Improve locale support.
	* config/locale/dragonfly/ctype_members.cc: Likewise.
	* config/os/bsd/dragonfly/ctype_configure_char.cc: Likewise.
	* config/os/bsd/dragonfly/os_defines.h: Define _GLIBCXX_USE_C99.
	* config/locale/dragonfly/c_locale.h: New.
	* config/locale/dragonfly/codecvt_members.cc: New.
	* config/locale/dragonfly/collate_members.cc: New.
	* config/locale/dragonfly/monetary_members.cc: New.
	* config/locale/dragonfly/numeric_members.cc: New.
	* config/locale/dragonfly/time_members.cc: New.
	* config/locale/dragonfly/time_members.h: New.

From-SVN: r227257
2015-08-27 13:12:41 +01:00
Jonathan Wakely a185c87663 * configure: Regenerate.
From-SVN: r227256
2015-08-27 13:12:31 +01:00
Edward Smith-Rowland 33df19a736 Ensure std::generate_canonical doesn't return 1.
2015-08-26  Edward Smith-Rowland  <3dw4rd@verizon.net>
	    Jonathan Wakely  <jwakely@redhat.com>

	PR libstdc++/64351
	PR libstdc++/63176
	* include/bits/random.tcc (generate_canonical): Loop until we get a
	result less than one.
	* testsuite/26_numerics/random/uniform_real_distribution/operators/
	64351.cc: New.

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

From-SVN: r227233
2015-08-26 22:27:09 +01:00
Jonathan Wakely 6bc41b268e Only set std::enable_shared_from_this member once.
* include/bits/shared_ptr.h (__enable_shared_from_this_helper): Use
	nullptr.
	* include/bits/shared_ptr_base.h (weak_ptr::_M_assign): Don't assign
	if ownership is already shared with a shared_ptr object.
	(__enable_shared_from_this_helper): Use nullptr.
	* testsuite/20_util/enable_shared_from_this/members/const.cc: New.
	* testsuite/20_util/enable_shared_from_this/members/reinit.cc: New.
	* testsuite/20_util/enable_shared_from_this/requirements/
	explicit_instantiation.cc: Instantiate with const and incomplete types.

From-SVN: r227232
2015-08-26 22:27:00 +01:00
Jonathan Wakely 66c182be12 try_emplace and insert_or_assign for Debug Mode.
* include/debug/map.h (map::try_emplace, map::insert_or_assign):
	Define.
	* include/debug/unordered_map (unordered_map::try_emplace,
	unordered_map::insert_or_assign): Define.

From-SVN: r227229
2015-08-26 21:58:14 +01:00
Jonathan Wakely e41fd1f067 libstdc++/66902 Make _S_debug_messages static.
PR libstdc++/66902
	* src/c++11/debug.cc (_S_debug_messages): Give internal linkage.

From-SVN: r227228
2015-08-26 21:22:58 +01:00
François Dumont 630a286ab6 re PR libstdc++/60519 (Debug mode should check comparators for irreflexivity)
2015-08-24  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/60519
	* include/debug/formatter.h (_Debug_msg_id::__msg_irreflexive_ordering):
	New enum entry.
	* include/debug/functions.h (_Irreflexive_checker): New.
	(__is_irreflexive, __is_irreflexive_pred): New.
	* include/debug/macros.h
	(__glibcxx_check_irreflexive, __glibcxx_check_irreflexive_pred): New
	macros.
	(__glibcxx_check_irreflexive2, __glibcxx_check_irreflexive_pred2): New
	macros limited to post-C++11 mode.
	* include/debug/debug.h
	(__glibcxx_requires_irreflexive, __glibcxx_requires_irreflexive_pred):
	New macros, use latter.
	(__glibcxx_requires_irreflexive2, __glibcxx_requires_irreflexive_pred2):
	Likewise.
	* include/bits/stl_algo.h
	(partial_sort_copy): Add irreflexive debug check.
	(partial_sort_copy): Likewise.
	(lower_bound): Likewise.
	(upper_bound): Likewise.
	(equal_range): Likewise.
	(binary_search): Likewise.
	(inplace_merge): Likewise.
	(includes): Likewise.
	(next_permutation): Likewise.
	(prev_permutation): Likewise.
	(is_sorted_until): Likewise.
	(minmax_element): Likewise.
	(partial_sort): Likewise.
	(nth_element): Likewise.
	(sort): Likewise.
	(merge): Likewise.
	(stable_sort): Likewise.
	(set_union): Likewise.
	(set_intersection): Likewise.
	(set_difference): Likewise.
	(set_symmetric_difference): Likewise.
	(min_element): Likewise.
	(max_element): Likewise.
	* include/bits/stl_algobase.h
	(lower_bound): Likewise.
	(lexicographical_compare): Likewise.
	* include/bits/stl_heap.h
	(push_heap): Likewise.
	(pop_heap): Likewise.
	(make_heap): Likewise.
	(sort_heap): Likewise.
	(is_heap_until): Likewise.
	* testsuite/25_algorithms/lexicographical_compare/debug/
	irreflexive_neg.cc: New.
	* testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: New.
	* testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
	New.

From-SVN: r227189
2015-08-25 20:27:03 +00:00
François Dumont 25c65938c8 Revert my change to commit with PR reference again.
From-SVN: r227187
2015-08-25 20:22:47 +00:00
François Dumont 41e4e5edce formatter.h (_Debug_msg_id::__msg_irreflexive_ordering): New enum entry.
2015-08-24  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/formatter.h (_Debug_msg_id::__msg_irreflexive_ordering):
	New enum entry.
	* include/debug/functions.h (_Irreflexive_checker): New.
	(__is_irreflexive, __is_irreflexive_pred): New.
	* include/debug/macros.h
	(__glibcxx_check_irreflexive, __glibcxx_check_irreflexive_pred): New
	macros.
	(__glibcxx_check_irreflexive2, __glibcxx_check_irreflexive_pred2): New
	macros limited to post-C++11 mode.
	* include/debug/debug.h
	(__glibcxx_requires_irreflexive, __glibcxx_requires_irreflexive_pred):
	New macros, use latter.
	(__glibcxx_requires_irreflexive2, __glibcxx_requires_irreflexive_pred2):
	Likewise.
	* include/bits/stl_algo.h
	(partial_sort_copy): Add irreflexive debug check.
	(partial_sort_copy): Likewise.
	(lower_bound): Likewise.
	(upper_bound): Likewise.
	(equal_range): Likewise.
	(binary_search): Likewise.
	(inplace_merge): Likewise.
	(includes): Likewise.
	(next_permutation): Likewise.
	(prev_permutation): Likewise.
	(is_sorted_until): Likewise.
	(minmax_element): Likewise.
	(partial_sort): Likewise.
	(nth_element): Likewise.
	(sort): Likewise.
	(merge): Likewise.
	(stable_sort): Likewise.
	(set_union): Likewise.
	(set_intersection): Likewise.
	(set_difference): Likewise.
	(set_symmetric_difference): Likewise.
	(min_element): Likewise.
	(max_element): Likewise.
	* include/bits/stl_algobase.h
	(lower_bound): Likewise.
	(lexicographical_compare): Likewise.
	* include/bits/stl_heap.h
	(push_heap): Likewise.
	(pop_heap): Likewise.
	(make_heap): Likewise.
	(sort_heap): Likewise.
	(is_heap_until): Likewise.
	* testsuite/25_algorithms/lexicographical_compare/debug/
	irreflexive_neg.cc: New.
	* testsuite/25_algorithms/lower_bound/debug/irreflexive.cc: New.
	* testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc:
	New.

From-SVN: r227147
2015-08-24 20:21:57 +00:00
Jonathan Wakely 4a88769c96 re PR libstdc++/65049 (Undefined behaviour with std::char_traits<char>)
PR libstdc++/65049
	* include/bits/char_traits.h (char_traits<char>::compare,
	char_traits<char>::find, char_traits<char>::move,
	char_traits<char>::copy, char_traits<char>::assign): Check for zero
	length.
	(char_traits<wchar_t>::compare, char_traits<wchar_t>::find,
	char_traits<wchar_t>::move, char_traits<wchar_t>::copy,
	char_traits<wchar_t>::assign): Likewise.
	(char_traits<char16_t>::move, char_traits<char16_t>::copy): Likewise.
	(char_traits<char32_t>::move, char_traits<char32_t>::copy): Likewise.
	* include/ext/pod_char_traits.h (char_traits<character<>>::move,
	char_traits<character<>>::copy): Likewise.
	* testsuite/21_strings/char_traits/requirements/char/65049.cc: New.
	* testsuite/21_strings/char_traits/requirements/char16_t/65049.cc:
	New.
	* testsuite/21_strings/char_traits/requirements/char32_t/65049.cc:
	New.
	* testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc:
	New.

From-SVN: r227127
2015-08-24 14:43:54 +01:00
Jonathan Wakely 3af7efb7d9 re PR libstdc++/67309 (Error compiling with -std=c++11 and -fsingle-precision-constant)
PR libstdc++/67309
	* include/bits/random.tcc
	(poisson_distribution::param_type::_M_initialize): Use max<double>.
	(binomial_distribution::param_type::_M_initialize): Likewise.
	* testsuite/17_intro/headers/c++200x/67309.cc: New.
	* testsuite/17_intro/headers/c++200x/all_attributes.cc: Remove
	redundant header.

From-SVN: r227126
2015-08-24 14:43:36 +01:00
Jonathan Wakely 4ba1fef27d libstdc++/67294 Don't run timed mutex tests on Darwin
PR libstdc++/67294
	* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Do not run
	on Darwin.
	* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.

From-SVN: r227043
2015-08-20 21:36:19 +01:00
Jonathan Wakely 89f0694859 any (__any_caster): Define at namespace scope so the name is visible to name lookup.
* include/experimental/any (__any_caster): Define at namespace scope
	so the name is visible to name lookup.
	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.

From-SVN: r227042
2015-08-20 21:19:58 +01:00
Jonathan Wakely f3f61ed2ab Makefile.am: Ensure gdb.py is installed for libstdc++ not libstdc++fs.
* python/Makefile.am: Ensure gdb.py is installed for libstdc++ not
	libstdc++fs.
	* python/Makefile.in: Regenerate.

# Auto-generated commit message above this line, original below.
	* python/Makefile.am: Ensure gdb.py is installed for libstdc++ not
	libstdc++fs.
	* python/Makefile.in: Regenerate.

From-SVN: r227030
2015-08-20 11:50:02 +01:00
Paolo Carlini dce573c43f cmath: Fix typo in comment.
2015-08-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/c_global/cmath: Fix typo in comment.

From-SVN: r227007
2015-08-19 13:20:29 +00:00
Paolo Carlini 157177af99 cmath: Revert fix for libstdc++/58625...
2015-08-19  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/c_global/cmath: Revert fix for libstdc++/58625, no
	longer necessary (__builtin_signbit is now type-generic).

From-SVN: r227006
2015-08-19 13:17:51 +00:00
Jonathan Wakely f641b2d6bb re PR c++/67216 (false is still a null pointer constant)
PR c++/67216
	* testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc:
	Fix use of safe-bool idiom that isn't valid in C++11.

From-SVN: r226986
2015-08-18 19:04:48 +01:00
Jonathan Wakely e92e7c15e1 * include/bits/ptr_traits.h: Include <bits/move.h> for addressof.
From-SVN: r226985
2015-08-18 19:04:42 +01:00
Jonathan Wakely 4c2b10d6a4 re PR libstdc++/67066 (libstdc++-v3/src/filesystem/dir.cc fails to compile with --enable-concept-checks)
PR libstdc++/67066
	* doc/xml/manual/configure.xml (manual.intro.setup.configure): Add
	caveats for --enable-concept-checks. Improve link text.
	* doc/xml/manual/diagnostics.xml (std.diagnostics.concept_checking):
	Clarify caveats.
	* doc/html/*: Regenerate.
	* include/bits/stl_deque.h (deque): Only use concept checks in C++03.
	* include/bits/stl_stack.h (stack): Likewise.
	* include/bits/stl_vector.h (vector): Likewise.

From-SVN: r226984
2015-08-18 19:04:32 +01:00
Jonathan Wakely 2548a4d6ba any (any::operator=(const any&)): Move check for self-assignment.
* include/experimental/any (any::operator=(const any&)): Move check
	for self-assignment.
	(any::operator=(any&&)): Add check for self-assignment.
	(any::operator=(_ValueType&&)): Constrain template argument.
	(any::swap(any&)): Add check for self-swap.
	* testsuite/experimental/any/assign/self.cc: Test move and swap.
	* testsuite/experimental/any/misc/any_cast_neg.cc: Update dg-error.

From-SVN: r226894
2015-08-14 12:51:18 +01:00
Jonathan Wakely 357c9f7edc array: Add feature-test macro.
* include/experimental/array: Add feature-test macro.
	* testsuite/experimental/array/neg.cc: Update dg-error.

From-SVN: r226893
2015-08-14 12:51:05 +01:00
Ville Voutilainen 708768eb18 neg.s: Remove.
2015-08-13  Ville Voutilainen  <ville.voutilainen@gmail.com>

        * testsuite/experimental/array/neg.s: Remove.
        * testsuite/experimental/array/neg.ii.gz: Remove.

From-SVN: r226866
2015-08-13 18:00:20 +03:00
Ville Voutilainen 9638eccd55 Implement std::experimental::fundamentals_v2::make_array and std::experimental::fundamentals_v2::to_array.
2015-08-13  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement std::experimental::fundamentals_v2::make_array and
	std::experimental::fundamentals_v2::to_array.
	* include/Makefile.am: Add array.
	* include/Makefile.in: Add array.
	* include/experimental/array: New.
	* testsuite/experimental/array/make_array.cc: Likewise.
	* testsuite/experimental/array/neg.cc: Likewise.
	* doc/html/manual/status.html: Mark make_array as Y.
	* doc/xml/manual/status_cxx2017.xml: Likewise.

From-SVN: r226865
2015-08-13 17:55:46 +03:00
Jonathan Wakely db23e4c46f alloc_traits.h: Add feature-test macro.
* include/bits/alloc_traits.h: Add feature-test macro.
	* include/bits/allocator.h: Likewise.
	* include/bits/range_access.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/unordered_map.h: Likewise.

From-SVN: r226864
2015-08-13 14:57:41 +01:00
Jonathan Wakely 0072c9ac90 2.cc: New.
* testsuite/30_threads/mutex/unlock/2.cc: New.
	* testsuite/30_threads/recursive_mutex/unlock/2.cc: New.
	* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: New.
	* testsuite/30_threads/shared_mutex/unlock/1.cc: New.
	* testsuite/30_threads/shared_timed_mutex/unlock/1.cc: New.
	* testsuite/30_threads/timed_mutex/unlock/2.cc: New.

From-SVN: r226863
2015-08-13 14:57:35 +01:00
Eelis van der Weegen 4c80e54478 shared_mutex (shared_mutex::unlock()): Fix typo.
2015-08-13  Eelis van der Weegen  <eelis@eelis.net>

	* include/std/shared_mutex (shared_mutex::unlock()): Fix typo.

From-SVN: r226862
2015-08-13 14:57:28 +01:00
Caroline Tice 441fb2cdb7 Fix warnings when bootstrapping on darwin with vtable verification enabled.
libstdc++-v3/ChangeLog:

2015-08-11  Caroline Tice <cmtice@google.com>

        PR 66521, Contributed by Eric Gallager
        * acinclude.m4 (VTV_CXXLINKFLAGS): Make this variable OS-specific, and
        fix the rpath flag to work properly for darwin.
        * configure: Regenerated.

From-SVN: r226820
2015-08-12 08:40:11 -07:00
Jonathan Wakely 93666a7b00 appendix_contributing.xml: Update patch email policy.
* doc/xml/manual/appendix_contributing.xml: Update patch email policy.
	* doc/xml/manual/status_cxx2017.xml: Update status table.
	* doc/html/manual/*: Regenerate.

From-SVN: r226806
2015-08-12 11:47:30 +01:00
Ville Voutilainen b95170d380 Implement N4279, Improved insertion interface for unique-key maps.
2015-08-09  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement N4279, Improved insertion interface for unique-key maps.
	* include/bits/stl_map.h (try_emplace, insert_or_assign): New.
	* include/bits/stl_tree.h (_M_get_insert_unique_pos,
	_M_get_insert_equal_pos, _M_get_insert_hint_unique_pos,
	_M_get_insert_hint_equal_pos): Make public.
	* include/bits/unordered_map.h (try_emplace, insert_or_assign): New.
	* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
	Likewise.
	* testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
	* testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
	Likewise.
	* testsuite/23_containers/unordered_map/modifiers/try_emplace.cc:
	Likewise.

From-SVN: r226743
2015-08-09 01:57:13 +03:00
Ville Voutilainen f334456903 Implement N4089 Safe conversions in unique_ptr<T[]> (LWG 2118) and N4366 LWG 2228...
2015-08-08  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement N4089 Safe conversions in unique_ptr<T[]> (LWG 2118)
	and N4366 LWG 2228: Missing SFINAE rule in unique_ptr
	templated assignment
	* include/bits/unique_ptr.h
	(__remove_cv, __is_derived_Tp): Remove.
	(default_delete::default_delete(const default_delete<_Up[]>)):
	Constrain with array convertibility.
	(default_delete::operator(_Up*)): Turn into a template,
	constrain with array convertibility.
	(__safe_conversion_up): New, single object version.
	(unique_ptr(unique_ptr<_Up, _Ep>&&)): Constrain with deleter
	convertibility.
	(unique_ptr::operator=(unique_ptr<_Up, _Ep>&&)): Likewise, and add
	is_assignable as a constraint.
	(__safe_conversion_up): Array version, renamed from __safe_conversion,
	updated to implement N4089.
	(__safe_conversion_raw): New.
	(unique_ptr(_Up)): Turn into a template, constrain with array
	convertibility.
	(unique_ptr(_Up,
        typename conditional<is_reference<deleter_type>::value,
        deleter_type, const deleter_type&>::type)): Likewise.
	(unique_ptr(_Up, typename
 	remove_reference<deleter_type>::type&&)): Likewise.
	(unique_ptr(unique_ptr<_Up, _Ep>&&)): Likewise.
	(operator=(unique_ptr<_Up, _Ep>&&)): Likewise, and add
	is_assignable as a constraint (array version).
	(reset(_Up)): Turn into a template, constrain with array
	convertibility.
	(reset(nullptr_t)): New.
	* testsuite/20_util/default_delete/48631_neg.cc: Adjust.
	* testsuite/20_util/unique_ptr/assign/48635.cc: Likewise.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/assign/cv_qual.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/cv_qual.cc: Likewise.
	* testsuite/20_util/unique_ptr/dr2228.cc: New.
	* testsuite/20_util/unique_ptr/modifiers/cv_qual.cc: Adjust.

From-SVN: r226733
2015-08-08 14:07:34 +03:00
Nikolai Bozhenov e1ed1bca36 constexpr.cc: Remove redundant -save-temps option.
2015-08-05  Nikolai Bozhenov  <n.bozhenov@samsung.com>

	* testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Remove
	redundant -save-temps option.
	* testsuite/20_util/shared_ptr/cons/constexpr.cc: Likewise.
	* testsuite/20_util/unique_ptr/cons/constexpr.cc: Likewise.
	* testsuite/20_util/weak_ptr/cons/constexpr.cc: Likewise.
	* testsuite/30_threads/future/cons/constexpr.cc: Likewise.
	* testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.

From-SVN: r226647
2015-08-05 21:57:03 +01:00
Jonathan Wakely 93411db8c7 re PR libstdc++/67078 (FAIL: 24_iterators/container_access.cc (test for excess errors) on aarch64-none-elf)
PR libstdc++/67078
	* include/bits/range_access.h (size, empty, data): Fix _N bad name.

From-SVN: r226515
2015-08-03 16:56:17 +01:00
Jonathan Wakely 155bfacbbe current_path.cc: Use canonical paths for comparisons.
* testsuite/experimental/filesystem/operations/current_path.cc: Use
	canonical paths for comparisons.

From-SVN: r226402
2015-07-30 13:41:33 +01:00
Tim Shen 81b7ff079a regex_automaton.h (_State_base, _State<>): Remove _TraitsT dependency from _State<>...
* include/bits/regex_automaton.h (_State_base, _State<>):
	Remove _TraitsT dependency from _State<>; Make matcher member
	into the union to reduce struct size.
	* include/bits/regex_automaton.tcc (_State_base<>::_M_print,
	_State_base<>::_M_dot, _StateSeq<>::_M_clone):
	Adjust to fit the interface. Factor out common parts in
	_M_clone as _State<>::_M_has_alt.
	* include/bits/regex_executor.h (_Executer<>::_M_lookahead):
	Only pass state id instead of the whole state.
	* include/bits/regex_executor.tcc (_Executer<>::_M_dfs,
	_Executer<>::_M_lookahead): Adjust to fit the interface.
	* include/std/regex: Include <ext/aligned_buffer.h>

From-SVN: r226395
2015-07-30 10:35:45 +00:00
Jonathan Wakely 2e3f48dc43 any (any::operator=(const any&)): Check for self-assignment.
* include/experimental/any (any::operator=(const any&)): Check for
	self-assignment.
	* testsuite/experimental/any/assign/self.cc: New.
	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.

From-SVN: r226393
2015-07-30 11:00:39 +01:00
Jonathan Wakely 626b8d8a48 re PR libstdc++/66829 (FAIL: 23_containers/multiset/modifiers/erase/dr130-linkage-check.cc)
PR libstdc++/66829
	* testsuite/lib/libstdc++.exp (v3-build_support): Compile
	testsuite_shared.cc with -std=gnu++98.

From-SVN: r226354
2015-07-29 15:56:11 +01:00
Jonathan Wakely ef20ab5e01 * testsuite/24_iterators/container_access.cc: New.
From-SVN: r226349
2015-07-29 13:55:58 +01:00
Ville Voutilainen a460d06d16 range_access.h: Change class to typename in every template.
2015-07-29  Ville Voutilainen  <ville.voutilainen@gmail.com>

	* include/bits/range_access.h: Change class to typename in every
	template.
	(size, empty, data): New functions from N4280.
	* testsuite/24_iterators/container_access.cc: New.

From-SVN: r226348
2015-07-29 13:41:32 +01:00
Ville Voutilainen 1fa9ba224e re PR libstdc++/60970 (Support std::hash with enum types (LWG 2148))
2015-07-29  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR libstdc++/60970
	* include/bits/functional_hash.h (__hash_enum): New.
	(hash): Derive from __hash_enum.
	* testsuite/20_util/hash/60970.cc: New.

From-SVN: r226347
2015-07-29 13:41:23 +01:00
Tim Shen f9ce3c1639 re PR libstdc++/67015 ("^[a-z0-9][a-z0-9-]*$", std::regex::extended is miscompiled)
PR libstdc++/67015
	* include/bits/regex_compiler.h (_Compiler<>::_M_expression_term,
	_BracketMatcher<>::_M_add_collating_element): Change signature
	to make checking the and of bracket expression easier.
	* include/bits/regex_compiler.tcc (_Compiler<>::_M_expression_term):
	Treat '-' as a valid literal if it's at the end of bracket expression.
	* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
	New testcases.

From-SVN: r226336
2015-07-29 03:45:35 +00:00
Jonathan Wakely fa0ed2b062 * include/bits/atomic_futex.h [_GLIBCXX_HAVE_LINUX_FUTEX]
(_M_load_and_test_until): Whitespace.
	(_M_load_and_test): Value-initialize the unused durations.
	(_M_load_when_equal): Add missing return value.

From-SVN: r226174
2015-07-24 17:30:04 +01:00
Michael Haubenwallner 74b7ec8c45 libstdc++-v3/fragment.am (AM_CPPFLAGS): Add CPPFLAGS
2015-07-24  Michael Haubenwallner  <michael.haubenwallner@ssi-schaefer.com>

	* fragment.am (AM_CPPFLAGS): Add CPPFLAGS.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* python/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++98/Makefile.in: Regenerate.
	* src/filesystem/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

From-SVN: r226138
2015-07-24 07:05:19 +00:00
DJ Delorie 8161e0c343 functional_hash.h: Add specializations for __intN types.
* include/bits/functional_hash.h: Add specializations for __intN
types.

* include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp (__gnu_pbds):
Guard against values that might exceed size_t's precision.

From-SVN: r226117
2015-07-23 13:57:34 -04:00
Jason Merrill 3a353ff584 * include/bits/c++config: Fix abi_tag in special modes.
From-SVN: r226022
2015-07-20 18:39:54 -04:00
Jonathan Wakely 5a7dbecc2e status_cxx2017.xml: Fix URL for N4279.
* doc/xml/manual/status_cxx2017.xml: Fix URL for N4279.
	* doc/html/manual/status.html: Regenerate.

From-SVN: r225988
2015-07-19 19:32:35 +01:00
Jonathan Wakely 9298e25f6c status_cxx2011.xml: Add caveats for native_handle.
* doc/xml/manual/status_cxx2011.xml: Add caveats for native_handle.
	* doc/html/manual/status.html: Regenerate.

From-SVN: r225939
2015-07-17 17:08:14 +01:00
François Dumont 5bc1c07c4a stl_algobase.h (__miter_base): Move...
2015-07-16  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_algobase.h (__miter_base): Move...
	* include/bits/cpp_type_traits.h: ...here.
	* include/debug/functions.h (__foreign_iterator_aux): Use latter.
	* testsuite/23_containers/vector/debug/insert7_neg.cc: New.

From-SVN: r225902
2015-07-16 19:17:26 +00:00
Jonathan Wakely 795038b722 re PR libstdc++/66855 (codecvt wrong endianness in UTF-16 conversions)
PR libstdc++/66855
	* src/c++11/codecvt.cc (__codecvt_utf8_utf16_base::do_in): Override
	endianness bit in mode.
	* testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc: New.

From-SVN: r225748
2015-07-13 21:07:48 +01:00
Jonathan Wakely c5d9ec5670 c++config (_GLIBCXX_NOEXCEPT_IF): Define.
* include/bits/c++config (_GLIBCXX_NOEXCEPT_IF): Define.
	* include/bits/forward_list.h (forward_list::swap): Make noexcept
	unconditional.
	* include/bits/hashtable.h (_Hashtable::swap): Do not use
	_S_nothrow_swap().
	* include/bits/stl_bvector.h (vector<bool>::swap): Make noexcept
	unconditional.
	* include/bits/stl_deque.h (deque::swap): Likewise.
	(swap(deque&, deque&)): Use _GLIBCXX_NOEXCEPT_IF.
	* include/bits/stl_list.h (list::swap): Make noexcept unconditional.
	(swap(list&, list&)): Use _GLIBCXX_NOEXCEPT_IF.
	* include/bits/stl_map.h (map::swap, swap(map&, map&)): Use
	_GLIBCXX_NOEXCEPT_IF, do not depend on _S_nothrow_swap.
	* include/bits/stl_multimap.h (multimap::swap,
	swap(multimap&, multimap&)): Likewise.
	* include/bits/stl_multiset.h (multiset::swap,
	swap(multiset&, multiset&)): Likewise.
	* include/bits/stl_set.h (set::swap, swap(set&, set&)): Likewise.
	* include/bits/stl_tree.h (_Rb_tree::swap,
	swap(_Rb_tree&, _Rb_tree&)): Likewise.
	* include/bits/stl_vector.h (vector::swap): Make noexcept
	unconditional.
	(swap(vector&, vector&)): Use _GLIBCXX_NOEXCEPT_IF.
	* include/debug/deque (deque::swap, swap): Likewise.
	* include/debug/forward_list (swap): Add noexcept.
	* include/debug/list (list::swap, swap): Use _GLIBCXX_NOEXCEPT_IF.
	* include/debug/map.h (map::swap, swap): Likewise.
	* include/debug/multimap.h (multimap::swap, swap): Likewise.
	* include/debug/multiset.h (multiset::Swap, swap): Likewise.
	* include/debug/set.h (set::swap, swap): Likewise.
	* include/debug/unordered_map (unordered_map::swap,
	unordered_multimap::swap, swap): Likewise.
	* include/debug/unordered_set (unordered_set::swap,
	unordered_multiset::swap, swap): Likewise.
	* include/debug/vector (vector::swap, swap): Likewise.
	* include/ext/alloc_traits.h (__alloc_traits::_S_nothrow_swap()):
	Remove.
	* include/profile/deque (deque::swap, swap): Use _GLIBCXX_NOEXCEPT_IF.
	* include/profile/forward_list (swap): Add noexcept.
	* include/profile/list (list::swap, swap) : Use _GLIBCXX_NOEXCEPT_IF.
	* include/profile/map.h (map::swap, swap): Likewise.
	* include/profile/multimap.h (multimap::swap, swap): Likewise.
	* include/profile/multiset.h (multiset::swap, swap): Likewise.
	* include/profile/set.h (set::swap, swap): Likewise.
	* include/profile/unordered_map (swap): Likewise.
	* include/profile/unordered_set (swap): Likewise.
	* include/profile/vector (vector::swap, swap): Likewise. Remove
	overloads for swapping rvalues.
	* testsuite/23_containers/deque/allocator/noexcept.cc: Update tests
	for noexcept on swap.
	* testsuite/23_containers/forward_list/allocator/noexcept.cc:
	Likewise.
	* testsuite/23_containers/list/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/map/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/multimap/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/multiset/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/set/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/unordered_map/allocator/noexcept.cc:
	Likewise.
	* testsuite/23_containers/unordered_multimap/allocator/noexcept.cc:
	Likewise.
	* testsuite/23_containers/unordered_multiset/allocator/noexcept.cc:
	Likewise.
	* testsuite/23_containers/unordered_set/allocator/noexcept.cc:
	Likewise.
	* testsuite/23_containers/vector/allocator/noexcept.cc: Likewise.
	* testsuite/23_containers/vector/bool/allocator/noexcept.cc: Likewise.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error line
	number.

From-SVN: r225744
2015-07-13 18:15:48 +01:00
John Marino 66a2f247e8 os_defines.h (_GLIBCXX_USE_C99_CHECK, [...]): Define.
2015-07-13  John Marino  <gnugcc@marino.st>

	* config/os/bsd/dragonfly/os_defines.h (_GLIBCXX_USE_C99_CHECK,
	_GLIBCXX_USE_C99_DYNAMIC, _GLIBCXX_USE_C99_LONG_LONG_CHECK,
	_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC): Define.

From-SVN: r225737
2015-07-13 15:53:08 +01:00
François Dumont 291e91daa7 hashtable.h (_Hashtable<>::__rehash_policy): Do not rehash container.
2015-07-05  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable.h (_Hashtable<>::__rehash_policy): Do not
	rehash container.
	* testsuite/23_containers/unordered_set/max_load_factor/robustness.cc:
	Adapt.

From-SVN: r225436
2015-07-05 21:16:07 +00:00
Jonathan Wakely ed3caa8c2a status_cxx2017.xml: Update status table.
* doc/xml/manual/status_cxx2017.xml: Update status table.
	* doc/html/manual/*: Regenerate.

From-SVN: r225380
2015-07-03 15:08:48 +01:00
Ville Voutilainen e37e6813d5 Implement std::experimental::fundamentals_v2::propagate_const.
2015-07-03  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement std::experimental::fundamentals_v2::propagate_const.
	* include/Makefile.am: Add propagate_const.
	* include/Makefile.in: Regenerate.
	* include/experimental/propagate_const: New.
	* testsuite/experimental/propagate_const/assignment/copy.cc: Likewise.
	* testsuite/experimental/propagate_const/assignment/move.cc: Likewise.
	* testsuite/experimental/propagate_const/assignment/move_neg.cc:
	Likewise.
	* testsuite/experimental/propagate_const/cons/copy.cc: Likewise.
	* testsuite/experimental/propagate_const/cons/default.cc: Likewise.
	* testsuite/experimental/propagate_const/cons/move.cc: Likewise.
	* testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
	* testsuite/experimental/propagate_const/hash/1.cc: Likewise.
	* testsuite/experimental/propagate_const/observers/1.cc: Likewise.
	* testsuite/experimental/propagate_const/relops/1.cc: Likewise.
	* testsuite/experimental/propagate_const/requirements1.cc: Likewise.
	* testsuite/experimental/propagate_const/requirements2.cc: Likewise.
	* testsuite/experimental/propagate_const/requirements3.cc: Likewise.
	* testsuite/experimental/propagate_const/requirements4.cc: Likewise.
	* testsuite/experimental/propagate_const/requirements5.cc: Likewise.
	* testsuite/experimental/propagate_const/swap/1.cc: Likewise.
	* testsuite/experimental/propagate_const/typedefs.cc: Likewise.

From-SVN: r225379
2015-07-03 15:08:37 +01:00
Jonathan Wakely 10d712eb7d acinclude.m4 (GLIBCXX_DEFAULT_ABI): Change valid arguments for --with-default-libstdcxx-abi
* acinclude.m4 (GLIBCXX_DEFAULT_ABI): Change valid arguments for
	--with-default-libstdcxx-abi
	* configure: Regenerate.
	* doc/xml/manual/configure.xml: Document valid arguments.

From-SVN: r225356
2015-07-02 22:52:38 +01:00
Uros Bizjak 53ac92c3e0 guard.cc (__test_and_acquire): Use __p after __atomic_load to avoid unused variable warning.
* libsupc++/guard.cc (__test_and_acquire): Use __p after __atomic_load
	to avoid unused variable warning.
	(__set_and_release): Use __p after __atomic_store to avoid unused
	variable warning.

From-SVN: r225298
2015-07-02 07:58:12 +02:00
Jonathan Wakely 7946683835 alloc_traits.h (__alloctr_rebind): Remove.
* include/bits/alloc_traits.h (__alloctr_rebind): Remove.
	(__allocator_traits_base): New base class.
	(__alloc_rebind): Reimplement in terms of detection idiom.
	(allocator_traits): Derive from __allocator_traits_base. Reimplement
	nested types in terms of detection idiom. Simplify SFINAE constraints
	on overloaded static member functions.
	* include/bits/hashtable.h (_Hashtable): Use __alloc_rebind instead
	of __alloctr_rebind.
	* testsuite/20_util/scoped_allocator/propagation.cc: Define rebind.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
	dg-error line number.

From-SVN: r225244
2015-07-01 13:24:09 +01:00
Jonathan Wakely 4f44c5556f ptr_traits.h (__ptrtr_elt_type, [...]): Remove
* include/bits/ptr_traits.h (__ptrtr_elt_type, __ptrtr_diff_type,
	__ptrtr_rebind, __ptrtr_not_void): Remove
	(__get_first_arg, __replace_first_arg, __make_not_void): Define new
	transformations.
	(__detected_or_): New detection trait.
	(pointer_traits): Use new traits.
	* testsuite/20_util/pointer_traits/pointer_to.cc: Add rebind member.
	* testsuite/20_util/pointer_traits/requirements/
	explicit_instantiation.cc: Use valid arguments to pointer_traits.

From-SVN: r225243
2015-07-01 13:24:03 +01:00
Jonathan Wakely 6af6bef4ac Implement N4502, the C++ Detection Idiom.
* doc/xml/manual/status_cxx2017.xml: Update status table.
	* include/experimental/type_traits (void_t, is_detected,
	is_detected_v, detected_t, detected_or, detected_or_t,
	is_detected_exact, is_detected_exact_v, is_detected_convertible,
	is_detected_convertible_v): Define.
	* include/std/type_traits (__detector, __detected_or, __detected_or_t,
	__detected_or_t_): Define.
	* testsuite/experimental/type_traits/detection.cc: New.

From-SVN: r225242
2015-07-01 13:23:54 +01:00
Jonathan Wakely 5ea37bcaba Makefile.am (stamp-pdf-doxygen): Grep for LaTeX errors in log.
* doc/Makefile.am (stamp-pdf-doxygen): Grep for LaTeX errors in log.
	* doc/Makefile.in: Regenerate.

From-SVN: r225191
2015-06-30 15:22:14 +01:00
Jonathan Wakely 6f86467975 * include/bits/stl_pair.h: Replace class keyword with typename.
From-SVN: r225190
2015-06-30 14:35:36 +01:00
Ville Voutilainen bf7818bfb0 Implement N4387, "Improving pair and tuple", and LWG 2367.
2015-06-30  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Implement N4387, "Improving pair and tuple", and LWG 2367.

	* include/bits/stl_pair.h (_ConstructiblePair,
	_ImplicitlyConvertiblePair, _MoveConstructiblePair,
	_ImplicitlyMoveConvertiblePair): New.
	(pair()): Constrain it.
	(pair(const _T1&, const _T2&), pair(const pair<_U1, _U2>&),
	pair(_U1&&, const _T2&), pair(const _T1&, _U2&&), pair(_U1&&, _U2&&),
	pair(pair<_U1, _U2>&&)): Make conditionally explicit.
	* include/std/tuple (_TC, tuple::_TC2, tuple::TCC, tuple::TMC): New.
	(tuple()): Constrain it.
	(tuple(const _UElements&...), tuple(_UElements&&...),
	tuple(const tuple<_UElements...>&), tuple(tuple<_UElements...>&&),
	tuple(allocator_arg_t, const _Alloc&, const _UElements&...),
	tuple(allocator_arg_t, const _Alloc&, _UElements&&...),
	tuple(allocator_arg_t, const _Alloc&, const tuple<_UElements...>&),
	tuple(allocator_arg_t, const _Alloc&, tuple<_UElements...>&&),
	tuple(const pair<_U1, _U2>&), tuple(pair<_U1, _U2>&&),
	tuple(allocator_arg_t, const _Alloc&, const pair<_U1, _U2>&),
	tuple(allocator_arg_t, const _Alloc&, pair<_U1, _U2>&&)): Make
	conditionally explicit.
	* include/experimental/functional (__boyer_moore_array_base): Name
	array type explicitly instead of using an empty braced-init-list.
	* testsuite/20_util/pair/cons/explicit_construct.cc: New.
	* testsuite/20_util/pair/piecewise.cc: Use piecewise_construct.
	* testsuite/20_util/pair/requirements/dr2367.cc: New.
	* testsuite/20_util/tuple/cons/explicit_construct.cc: New.
	* testsuite/20_util/tuple/requirements/dr2367.cc: New.

From-SVN: r225189
2015-06-30 14:26:49 +01:00
Jonathan Wakely d62808554d * configure: Regenerate.
From-SVN: r225183
2015-06-30 13:53:14 +01:00
François Dumont 24167c42e6 stl_iterator_base_types.h (_Iter_base): Limit definition to pre-C++11 mode.
2015-06-29  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_iterator_base_types.h (_Iter_base): Limit definition
	to pre-C++11 mode.
	* include/debug/functions.h
	(__gnu_debug::__valid_range, __gnu_debug::__base): Move...
	* include/debug/safe_iterator.h
	(__gnu_debug::_Sequence_traits): New.
	(__gnu_debug::__get_distance_from_begin): New.
	(__gnu_debug::__get_distance_to_end): New.
	(__gnu_debug::_Safe_iterator<>::_M_valid_range): Expose iterator range
	distance information. Add optional check_dereferenceable parameter,
	default true.
	(__gnu_debug::_Distance_precision, __gnu_debug::__get_distance): Move
	default definition...
	(__gnu_debug::__get_distance): New overload for _Safe_iterator.
	(__gnu_debug::__unsafe): Likewise.
	* include/debug/helper_functions.h: ...here. New.
	(__gnu_debug::__unsafe): New helper function to remove safe iterator
	layer.
	* include/debug/stl_iterator.h: New. Include latter.
	* include/bits/stl_iterator.h: Include latter in debug mode.
	* include/debug/stl_iterator.tcc: Adapt.
	* include/debug/safe_local_iterator.h (__gnu_debug::__get_distance): Add
	overload for _Safe_local_iterator.
	(__gnu_debug::__unsafe): Likewise.
	* include/debug/safe_local_iterator.tcc: Adapt.
	* include/debug/macros.h (__glibcxx_check_valid_range2): New.
	(__glibcxx_check_insert_range): Add _Dist parameter.
	(__glibcxx_check_insert_range_after): Likewise.
	(__glibcxx_check_string, __glibcxx_check_string_len): Implement using
	_GLIBCXX_DEBUG_PEDASSERT.
	* include/debug/deque (deque<>::assign): Remove iterator debug layer
	when possible.
	(deque<>::insert): Likewise.
	* include/debug/forward_list (__glibcxx_check_valid_fl_range): New.
	(forward_list<>::splice_after): Use latter.
	(forward_list<>::assign): Remove iterator debug layer when possible.
	(forward_list<>::insert_after): Likewise.
	(__gnu_debug::_Sequence_traits<>): Partial specialization.
	* include/debug/list (list<>::assign): Remove iterator debug layer when
	possible.
	(list<>::insert): Likewise.
	[__gnu_debug::_Sequence_traits<>]: Partial specialization pre C++11 ABI.
	* include/debug/map.h (map<>::insert): Remove iterator debug layer when
	possible.
	* include/debug/multimap.h (multimap<>::insert): Likewise.
	* include/debug/set.h (set<>::insert): Likewise.
	* include/debug/multiset.h (multiset<>::insert): Likewise.
	* include/debug/string (basic_string<>::append, basic_string<>::assign,
	basic_string<>::insert, basic_string<>::replace): Likewise.
	* include/debug/unordered_map
	(unordered_map<>::insert, unordered_multimap<>::insert): Likewise.
	* include/debug/unordered_set
	(unordered_set<>::insert, unordered_multiset<>insert): Likewise.
	* include/debug/vector
	(vector<>::assign, vector<>::insert): Likewise.
	* include/Makefile.am: Add new debug headers.
	* include/Makefile.in: Regenerate.

From-SVN: r225143
2015-06-29 20:17:56 +00:00
Jonathan Wakely a2b5fdcbdb Implement N4258 (Cleaning-up noexcept in the Library rev 3)
* doc/xml/manual/intro.xml: Document LWG 2108 status.
	* include/bits/alloc_traits.h (allocator_traits::is_always_equal):
	Define.
	* include/bits/allocator.h (allocator::is_always_equal): Likewise.
	* include/bits/forward_list.h
	(forward_list::operator=(forward_list&&)): Use __bool_constant.
	(forward_list::swap(forward_list&)): Add noexcept.
	* include/bits/hashtable.h (_Hashtable::operator=(_Hashtable&&)):
	Likewise.
	(_Hashtable::swap(_Hashtable&)): Likewise.
	* include/bits/stl_deque.h (_Deque_base::_Deque_base(_Deque_base&&)):
	Use _Alloc_traits::is_always_equal.
	(deque::operator=(deque&&)): Likewise.
	(deque::_M_move_assign1(deque&&, false_type)): Add comment and use
	__bool_constant.
	(swap(deque&, deque&)): Add noexcept.
	* include/bits/stl_list.h (list::operator=(list&&)): Use
	__bool_constant.
	(swap(list&, list&)): Add noexcept.
	* include/bits/stl_map.h (map::swap(map&)): Include _Compare in
	noexcept.
	(swap(map&, map&)): Add noexcept.
	* include/bits/stl_multimap.h (multimap::swap(multimap&)): Include
	_Compare in noexcept.
	(swap(multimap&, multimap&)): Add noexcept.
	* include/bits/stl_multiset.h (multiset::swap(multiset&)): Include
	_Compare in noexcept.
	(swap(multiset&, multiset&)): Add noexcept.
	* include/bits/stl_set.h (set::swap(set&)): Include _Compare in
	noexcept.
	(swap(set&, set&)): Add noexcept.
	* include/bits/stl_tree.h (_Rb_tree::operator=(_Rb_tree&&)): Include
	_Compare in noexcept.
	(_Rb_tree::_Rb_tree(_Rb_tree&&, _Node_alloc_type&&)): Use
	is_always_equal.
	* include/bits/stl_vector.h (vector::operator=(vector&&)): Use
	__bool_constant.
	(swap(vector&, vector&)): Add noexcept.
	* include/bits/unordered_map.h (swap(unordered_map&, unordered_map&),
	swap(unordered_multimap& unordered_multimap&)): Add noexcept.
	* include/bits/unordered_set.h (swap(unordered_set&, unordered_set&),
	swap(unordered_multiset& unordered_multiset&)): Add noexcept.
	* include/ext/alloc_traits.h (__allocator_always_compares_equal):
	Remove.
	(__alloc_traits::_S_always_equal()): Use is_always_equal instead of
	__allocator_always_compares_equal.
	* include/ext/array_allocator.h (array_allocator::is_always_equal):
	Define.
	* include/std/scoped_allocator (__any_of, __propagate_on_copy,
	__propagate_on_move, __propagate_on_swap): Remove.
	(scoped_allocator_adaptor::propagate_on_container_copy_assignment,
	scoped_allocator_adaptor::propagate_on_container_move_assignment,
	scoped_allocator_adaptor::propagate_on_container_swap): Define with
	__and_ instead of __any_of.
	(scoped_allocator_adaptor::is_always_equal): Define.
	* testsuite/20_util/allocator_traits/members/is_always_equal.cc: New.
	* testsuite/20_util/scoped_allocator/propagation.cc: Make traits
	derive from true_type or false_type.
	* testsuite/23_containers/deque/allocator/move_assign-2.cc: Add
	is_always_equal member and remove the trait specialization.
	* testsuite/23_containers/vector/52591.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r225081
2015-06-26 21:10:24 +01:00
Jonathan Wakely 504a5fe6fd stl_bvector.h (vector<bool>::vector()): Add noexcept.
* include/bits/stl_bvector.h (vector<bool>::vector()): Add noexcept.
	* include/bits/stl_map.h (map::map()): Likewise.
	* include/bits/stl_multimap.h (multimap::multimap()): Likewise.
	* include/bits/stl_multiset.h (multiset::multiset()): Likewise.
	* include/bits/stl_set.h (set::set()): Likewise.

From-SVN: r225024
2015-06-26 18:26:38 +01:00
Jonathan Wakely 67b0404e12 * include/bits/locale_conv.h (__do_str_codecvt): Set __count.
From-SVN: r224985
2015-06-25 19:23:41 +01:00
François Dumont e25d2617ac basic_string.h (basic_string<>::front()): Add !empty debug check.
2015-06-24  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/basic_string.h (basic_string<>::front()): Add !empty
	debug check.
	(basic_string<>::back()): Likewise.
	(basic_string<>::pop_back()): Likewise.

From-SVN: r224919
2015-06-24 20:12:05 +00:00
Paolo Carlini a2055cc9e5 get_neg.cc: Adjust dg-error line numbers.
2015-06-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust
	dg-error line numbers.
	* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
	Likewise.

From-SVN: r224897
2015-06-24 12:18:29 +00:00
François Dumont 7d17de7f73 array: Include <array>.
2015-06-23  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/array: Include <array>. Add version namespace when
	specializing tuple interface to array. Add specialization for
	__is_tuple_like_impl.
	* include/profile/array: Likewise.
	* include/std/array: Include <utility>. Add specialization for
	__is_tuple_like_impl.
	* include/std/tuple
	(__is_tuple_like_impl<>, __is_tuple_like_impl<pair>): Move...
	* include/std/utility: ... here. Include <type_traits>.
	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Adjust
	dg-error line number.
	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Likewise.

From-SVN: r224857
2015-06-23 19:51:02 +00:00
Jonathan Wakely e39c4966c7 1.cc: Use non-negative rho argument.
* testsuite/26_numerics/complex/value_operations/1.cc: Use
	non-negative rho argument.

From-SVN: r224739
2015-06-22 16:09:32 +01:00
Jonathan Wakely e51d877098 list (__gnu_debug::list): Use allocator-aware _Safe_container base.
* include/debug/list (__gnu_debug::list): Use allocator-aware
	_Safe_container base.
	* include/debug/string (__gnu_debug::basic_string): Use
	allocator-aware _Safe_container base for cxx11 ABI.

From-SVN: r224738
2015-06-22 16:09:27 +01:00
Jonathan Wakely 9eb659e003 locale_conv.h (__do_str_codecvt): Handle empty range.
* include/bits/locale_conv.h (__do_str_codecvt): Handle empty range.
	(wstring_convert): Move into __cxx11 namespace.
	(wbuffer_convert(streambuf*, _Codecvt*, state_type)): Fix exception
	message.

From-SVN: r224737
2015-06-22 16:09:22 +01:00
Jonathan Wakely 4db6c2f585 re PR libstdc++/64657 (Support iterators with overloaded operator-comma)
PR libstdc++/64657
	* include/bits/stl_uninitialized.h
	(__uninitialized_copy::__uninit_copy): Cast expression to void.

From-SVN: r224736
2015-06-22 16:09:14 +01:00
Jonathan Wakely cc7f3d0eee C++11 allocator support for std::list.
PR libstdc++/55409
	* include/bits/list.tcc (_List_base::_M_clear()): Use allocator traits.
	(list::list(const list&)): Use allocator propagation trait. Use
	_M_assign_dispatch to copy elements.
	* include/bits/stl_list.h (_List_node): Use __aligned_membuf in C++11.
	(_List_node::_M_valptr()): Add accessor for stored value.
	(_List_iterator, _List_const_iterator, _List_base): Use _M_valptr().
	(_List_base, list): Use allocator traits.
	(_List_base::_M_get_Tp_allocator, _List_base::get_allocator): Remove.
	(_List_base::_M_move_nodes): New function.
	(_List_base(_List_base&&)): Use _M_move_nodes.
	(_List_base(_List_base&&, _Node_alloc_type&&)): New constructor.
	(list::_M_create_node, list::_M_erase, list::max_size): Use allocator
	traits.
	(list(size_type)): Add allocator parameter.
	(list(const list&)): Use allocator propagation trait.
	(list(const list&, const allocator_type&)): New constructor.
	(list(list&&, const allocator_type&)): Likewise.
	(list::operator=(list&&), list::swap(list&)): Use allocator
	propagation traits.
	(list::_M_move_assign): New functions.
	* include/debug/list: Add allocator-extended constructors.
	* include/profile/list: Likewise.
	* python/libstdcxx/v6/printers.py (get_value_from_list_node): New
	function to get value from _List_node.
	(StdListPrinter): Use get_value_from_list_node.
	* testsuite/23_containers/list/allocator/copy.cc: New.
	* testsuite/23_containers/list/allocator/copy_assign.cc: New.
	* testsuite/23_containers/list/allocator/minimal.cc: New.
	* testsuite/23_containers/list/allocator/move.cc: New.
	* testsuite/23_containers/list/allocator/move_assign.cc: New.
	* testsuite/23_containers/list/allocator/noexcept.cc: New.
	* testsuite/23_containers/list/allocator/swap.cc: New.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-prune-output line number.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r224580
2015-06-17 21:36:42 +01:00
Jonathan Wakely 21bdef94b1 forward_list.h (_Fwd_list_base(const _Node_alloc_type&)): Change parameter to rvalue-reference.
* include/bits/forward_list.h
	(_Fwd_list_base(const _Node_alloc_type&)): Change parameter to
	rvalue-reference.
	(_Fwd_list_base(_Fwd_list_base&&, const _Node_alloc_type&)): Likewise.
	(forward_list(const _Alloc&)): Split default constructor out to
	separate function.
	(forward_list(forward_list&&, const _Alloc&)): Move elements if base
	class didn't do so.
	(forward_list::_M_move_assign(forward_list&&, true_type)): Replace
	swap call with two assignments.
	* include/bits/forward_list.tcc
	(_Fwd_list_base(_Fwd_list_base&&, const _Node_alloc_type&)): Don't
	move elements when allocators are not equal.
	* include/debug/forward_list (forward_list(const allocator_type&)):
	Split default constructor out to separate function.
	* include/profile/forward_list (forward_list(const _Alloc&)):
	Likewise.

From-SVN: r224566
2015-06-17 18:45:45 +01:00
Jonathan Wakely 9649e5b62e forward_list.h (forward_list::_M_get_Node_allocator): Remove unnecessary uses of operator& and static_cast.
* include/bits/forward_list.h (forward_list::_M_get_Node_allocator):
	Remove unnecessary uses of operator& and static_cast.
	* include/bits/forward_list.tcc
	(forward_list::operator=(const forward_list&)): Use __addressof
	instead of operator&.
	(forward_list::remove(const _Tp&), forward_list::remove(_Pred)):
	Remove invalid static_casts.
	* include/debug/forward_list: Use __addressof instead of operator&.
	* testsuite/23_containers/forward_list/modifiers/addressof.cc: New.

From-SVN: r224553
2015-06-17 12:33:31 +01:00
Jonathan Wakely c92334d4c5 alloc_traits.h (__alloc_traits::_S_nothrow_swap()): Use __is_nothrow_swappable.
* include/ext/alloc_traits.h (__alloc_traits::_S_nothrow_swap()): Use
	__is_nothrow_swappable.

From-SVN: r224552
2015-06-17 11:51:46 +01:00
Jonathan Wakely 91b142ffc3 * include/bits/allocated_ptr.h (__allocated_ptr): Use __addressof.
From-SVN: r224540
2015-06-16 23:33:06 +01:00
Jonathan Wakely 200fcd3398 list.tcc (list::operator=(const list&), [...]): Use __addressof instead of operator&.
* include/bits/list.tcc (list::operator=(const list&), list::merge):
	Use __addressof instead of operator&.
	(list::sort): Use array-to-pointer decay instead of operator&.
	* include/bits/stl_list.h (list::splice): Use __addressof instead of
	operator&.
	* include/debug/formatter.h (_Error_formatter::_Parameter::_Parameter):
	Likewise.
	* include/debug/functions.h (__check_singular): Likewise.
	* include/debug/list (list::splice, list::merge): Likewise.
	* testsuite/23_containers/list/modifiers/addressof.cc: New.

From-SVN: r224539
2015-06-16 22:04:53 +01:00
Jonathan Wakely 0dc3cba1bd re PR libstdc++/65393 (std::thread shared_ptr inefficiency)
PR libstdc++/65393
	* src/c++11/thread.cc (thread::_M_make_thread): Replace shared_ptr
	copies with moves.

From-SVN: r224530
2015-06-16 18:53:52 +01:00
Jonathan Wakely 7388ee9e9b * include/precompiled/stdc++.h: Include <codecvt> and <shared_mutex>.
From-SVN: r224425
2015-06-12 13:27:06 +01:00
Jonathan Wakely f0b587aa84 Fix whitespace in changelog.
From-SVN: r224416
2015-06-12 11:26:10 +01:00
Jonathan Wakely 6a3d0bb327 re PR libstdc++/66464 (codecvt_utf16 max_length returning incorrect value)
PR libstdc++/66464
	* src/c++11/codecvt.cc (codecvt_utf16_base<char32_t>::do_max_length):
	Return 4 not 3.

From-SVN: r224415
2015-06-12 11:26:05 +01:00
Ramana Radhakrishnan 1c6682fa9f Use atomics in guard.cc / remove special casing in targets.
The PowerPC, AIX, Alpha, IA64  implementations of atomic_word.h are in no
way different from what can be achieved with the generic rewrite in
Patch 1 of this series - delete these.

2015-06-12  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * config/cpu/alpha/atomic_word.h: Remove.
        * config/cpu/ia64/atomic_word.h: Remove.
        * config/cpu/powerpc/atomic_word.h: Remove.
        * config/os/aix/atomic_word.h: Remove.
        * configure.host (atomic_word_dir) [ia64, aix*, powerpc, alpha]:
        Use generic definition.

From-SVN: r224413
2015-06-12 09:55:38 +00:00
Ramana Radhakrishnan dd38693ee5 Use atomics in guard.cc / remove special casing in targets.
The PowerPC, AIX, Alpha, IA64  implementations of atomic_word.h are in no
way different from what can be achieved with the generic rewrite in
Patch 1 of this series - delete these.

2015-06-12  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * config/cpu/alpha/atomic_word.h: Remove.
        * config/cpu/ia64/atomic_word.h: Remove.
        * config/cpu/powerpc/atomic_word.h: Remove.
        * config/os/aix/atomic_word.h: Remove.
        * configure.host (atomic_word_dir) [ia64, aix*, powerpc, alpha]:
        Use generic definition.

From-SVN: r224412
2015-06-12 09:53:24 +00:00
Ramana Radhakrishnan 57e6d9be77 Use atomics in guard.cc.
This provides proper definitions for _GLIBCXX_READ_MEM_BARRIER and
_GLIBCXX_WRITE_MEM_BARRIER, rewrites the guards in terms of proper
atomic extensions and removes internal uses of
_GLIBCXX_READ_MEM_BARRIER and _GLIBCXX_WRITE_MEM_BARRIER and replaces
them with equivalent atomics.

2015-06-12  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR target/66200
	PR c++/66192
	* * config/cpu/generic/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER): Define
        (_GLIBCXX_WRITE_MEM_BARRIER): Likewise
        * include/bits/shared_ptr_base.h: Use ACQ_REL barrier.
        * include/ext/atomicity.h: Likewise.
        * include/tr1/shared_ptr.h: Likewise.
        * libsupc++/guard.cc (__test_and_acquire): Rewrite with atomics.
        Update comment.
        (__set_and_release): Likewise.
        * testsuite/20_util/shared_ptr/cons/43820_neg.cc (test01): Adjust for
	line numbers.
        * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
        * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
	Likewise.

From-SVN: r224411
2015-06-12 09:49:41 +00:00
Jonathan Wakely 7672ab25db tuple (__is_tuple_like_impl): Disambiguate array in debug and profile modes.
* include/std/tuple (__is_tuple_like_impl): Disambiguate array in
	debug and profile modes.
	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adjust tests
	for swap in C++11 and later.

From-SVN: r224397
2015-06-12 00:22:19 +01:00
Jonathan Wakely 8602ca0a2d re PR libstdc++/66030 ([5.1.0] std::codecvt_byname missing from libstdc++ DLL)
PR libstdc++/66030
	* config/abi/pre/gnu.ver: Export codecvt_byname and codecvt symbols
	for mingw32.

From-SVN: r224273
2015-06-09 09:50:00 +01:00
Jonathan Wakely c00f4f5fb3 re PR libstdc++/66441 (wstring_convert not working correctly)
PR libstdc++/66441
	* testsuite/22_locale/conversions/string/66441.cc: New.
	* include/bits/locale_conv.h (__do_str_codecvt): Reserve enough space
	in the output string for BOM and complete result.

From-SVN: r224222
2015-06-08 14:03:45 +01:00
Jonathan Wakely aa4e0c43bc re PR libstdc++/66417 (std::codecvt_utf16<char32_t, 0x10FFFF, std::codecvt_mode::generate_header> generates incorrect output)
PR libstdc++/66417
	* src/c++11/codecvt.cc (write_utf16_code_point): Use adjust_byte_order
	for single UTF-16 units.
	* testsuite/22_locale/codecvt/codecvt_utf16/66417.cc: New.

From-SVN: r224217
2015-06-08 12:09:17 +01:00
François Dumont d7b35f22be stl_tree.h (_Rb_tree<>::__is_transparent<>): Move to outer scope and rename to ...
2015-06-07  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_tree.h (_Rb_tree<>::__is_transparent<>): Move to
	outer scope and rename to ...
	(std::__hash_is_transparent<>): ... this.
	* include/debug/stl_map.h (map::find<>,
	map::lower_bound<>, map::upper_bound<>, map::equal_range<>): New
	member function templates to perform heterogeneous lookup.
	* include/debug/stl_multimap.h (multimap::find<>,
	multimap::lower_bound<>, multimap::upper_bound<>,
	multimap::equal_range<>): Likewise.
	* include/debug/stl_multiset.h (multiset::find<>,
	multiset::lower_bound<>, multiset::upper_bound<>,
	multiset::equal_range<>): Likewise.
	* include/debug/stl_set.h (set::find<>,
	set::lower_bound<>, set::upper_bound<>, set::equal_range<>): Likewise.
	* include/profile/stl_map.h (map::find<>, map::count<>,
	map::lower_bound<>, map::upper_bound<>, map::equal_range<>): Likewise.
	* include/profile/stl_multimap.h (multimap::find<>, multimap::count<>,
	multimap::lower_bound<>, multimap::upper_bound<>,
	multimap::equal_range<>): Likewise.
	* include/profile/stl_multiset.h (multiset::find<>, multiset::count<>,
	multiset::lower_bound<>, multiset::upper_bound<>,
	multiset::equal_range<>): Likewise.
	* include/profile/stl_set.h (set::find<>, set::count<>,
	set::lower_bound<>, set::upper_bound<>, set::equal_range<>): Likewise.
	* testsuite/23_containers/map/operations/1.cc: Check const variants.
	* testsuite/23_containers/multimap/operations/1.cc: Likewise.
	* testsuite/23_containers/multiset/operations/1.cc: Likewise.
	* testsuite/23_containers/set/operations/1.cc: Likewise.

From-SVN: r224200
2015-06-07 20:45:57 +00:00
Jonathan Wakely 46ba128114 status_cxx2017.xml: Update status tables.
* doc/xml/manual/status_cxx2017.xml: Update status tables.
	* doc/html/manual/*: Regenerate.
	* include/std/type_traits (bool_constant): Define.
	* testsuite/20_util/bool_constant/requirements.cc: New.
	* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
	Likewise.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
	Likewise.

From-SVN: r224160
2015-06-05 18:17:53 +01:00
Jonathan Wakely 712266515f shared_mutex (__shared_mutex_pthread, [...]): New helper types implementing the shared mutex requirements.
* include/std/shared_mutex (__shared_mutex_pthread,
	__shared_mutex_cv): New helper types implementing the shared mutex
	requirements.
	(shared_mutex): New type for C++17.
	(shared_timed_mutex): Derive from one of the new helper types.
	* testsuite/30_threads/shared_mutex/cons/1.cc: New.
	* testsuite/30_threads/shared_mutex/cons/assign_neg.cc: New.
	* testsuite/30_threads/shared_mutex/cons/copy_neg.cc: New.
	* testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
	New.
	* testsuite/30_threads/shared_mutex/try_lock/1.cc: New.
	* testsuite/30_threads/shared_mutex/try_lock/2.cc: New.

From-SVN: r224158
2015-06-05 17:31:05 +01:00
Jonathan Wakely 9bbcf8b85b Fix date of ChangeLog entry.
From-SVN: r224155
2015-06-05 17:00:04 +01:00
Ville Voutilainen ddb63209a8 Add __is_nothrow_swappable and take it into use.
2015-06-04  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Add __is_nothrow_swappable and take it into use.
	* include/bits/algorithmfwd.h (swap): Only declare for C++98 mode.
	* include/bits/move.h (swap): Add constraints in C++11 and later.
	* include/bits/stl_pair.h (swap): Use __is_nothrow_swappable
	for the free swap function for pair.
	* include/bits/stl_queue.h (swap): Use __is_nothrow_swappable
	for the free swap functions for queue and priority_queue.
	* include/bits/stl_stack.h (swap): Use __is_nothrow_swappable
	for the free swap function for stack.
	* include/debug/array (swap): Use __is_nothrow_swappable
	for the free swap function for array.
	* include/profile/array (swap): Likewise.
	* include/std/array (swap): Likewise.
	* include/std/tuple (_Tuple_impl::_M_swap): Use __is_nothrow_swappable.
	* include/std/type_traits (__is_swappable_impl::__is_swappable,
	__is_nothrow_swappable_impl, __is_nothrow_swappable): New.
	* testsuite/20_util/is_nothrow_swappable/requirements/
	explicit_instantiation.cc: New.
	* testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc:
	New.
	* testsuite/20_util/is_nothrow_swappable/value.cc: New.

From-SVN: r224153
2015-06-05 15:44:26 +01:00
François Dumont 82b544ad25 2015-06-03 François Dumont fdumont@gcc.gnu.org>
* testsuite/23_containers/list/61347.cc: Add dg-require-normal-mode.

From-SVN: r224100
2015-06-03 20:15:35 +00:00
Jonathan Wakely 5211a52d57 abi.xml: Document versioning for 5.1.0 release.
* doc/xml/manual/abi.xml: Document versioning for 5.1.0 release.
	* doc/html/manual/*: Regenerate.

From-SVN: r224025
2015-06-02 12:17:43 +01:00
Jonathan Wakely 5d65efd4df lwg-active.html: Update to R93.
* doc/html/ext/lwg-active.html: Update to R93.
	* doc/html/ext/lwg-closed.html: Likewise.
	* doc/html/ext/lwg-defects.html: Likewise.
	* doc/html/manual/*: Regenerate.
	* doc/xml/manual/intro.xml: Document status of several DRs.

From-SVN: r224023
2015-06-02 12:07:30 +01:00
Renlin Li fc7e20fd7a [libstdc++-v3]Add _GLIBCXX_HAVE_LIMIT_FSIZE to guard 27_io/fpos/14775.cc.
libstdc++-v3/

2015-06-02  Renlin Li  <renlin.li@arm.com>

	* testsuite/27_io/fpos/14775.cc: Add _GLIBCXX_HAVE_LIMIT_FSIZE check.

From-SVN: r224015
2015-06-02 08:54:25 +00:00
Jonathan Wakely 77d0ed47e8 libstdc++.exp (libstdc++_init): Unset LANGUAGE environment variable.
* testsuite/lib/libstdc++.exp (libstdc++_init): Unset LANGUAGE
	environment variable.

From-SVN: r223937
2015-06-01 12:57:33 +01:00
Jonathan Wakely 5d946f4228 re PR libstdc++/66354 ([UBSAN] stl_algobase.h:708:7: runtime error: null pointer passed as argument)
PR libstdc++/66354
	* include/bits/stl_algobase.h (__fill_a): Check length before calling
	memset.

From-SVN: r223906
2015-05-31 23:42:17 +01:00
Jonathan Wakely 12fc64ac3a stl_algobase.h (__equal<true>::equal): Check length instead of checking for null pointers.
* include/bits/stl_algobase.h (__equal<true>::equal): Check length
	instead of checking for null pointers.
	(__lexicographical_compare<true>::__lc): Only check shorter length.

From-SVN: r223886
2015-05-30 12:44:02 +01:00
François Dumont adad2a7d90 2015-05-29 François Dumont fdumont@gcc.gnu.org>
* include/debug/debug.h (_GLIBCXX_DEBUG_ASSERT,
	_GLIBCXX_DEBUG_PEDASSERT, _GLIBCXX_DEBUG_ONLY): Move definition...
	* include/debug/assertions.h: ...here, new.
	* include/debug/formatter.h
	(_Error_formatter::_Is_iterator_value_type): New.
	(_Error_formatter::_Is_instance): New.
	(_Error_formatter::_Parameter): Make public and not friend anymore.
	(_Error_formatter::_Parameter::__instance): New _M_kind enum entry.
	(_Error_formatter::_Parameter::__iterator_value_type): New _M_kind enum
	entry.
	(_Error_formatter::_Parameter::_Type): New.
	(_Error_formatter::_Parameter::_Instance): New, inherit from
	latter.
	(union _Error_formatter::_Parameter::_M_variant): Reorganize.
	(_Parameter(_Iterator const&, const char*, _Is_iterator)): Make all
	overloads take iterator through a const reference.
	(_Parameter(const _Iterator&, const char*, _Is_iterator_value_type)):
	New.
	(_Parameter(const _Type&, const char*, _Is_instance)): New.
	(_Error_formatter::_M_print_type): Delete.
	(_Error_formatter::_M_iterator_value_type): New.
	(_Error_formatter::_M_instance): New.
	* include/Makefile.am: Add new above debug file.
	* include/Makefile.in: Regenerate.
	* include/debug/functions.h
	(__check_dereferenceable(const _Safe_iterator<>&),
	__valid_range(const _Safe_iterator<>&),
	__is_safe_random_iterator<_Safe_iterator<>>): Move...
	* include/debug/safe_iterator.h: ... here.
	Replace debug.h include with assertions.h.
	(__check_singular_aux): Move...
	* include/debug/safe_base.h: ... here.
	* include/debug/functions.h
	(__check_dereferenceable(const _Safe_local_iterator<>&),
	__valid_range(const _Safe_local_iterator<>&): Move...
	* include/debug/safe_local_iterator.h: ...here.
	* include/debug/safe_sequence.h: Replace debug.h with assertions.h.
	Remove _Safe_iterator declaration.
	* include/debug/safe_unordered_container.h: Replace debug.h with
	assertions.h.
	* include/debug/array: Replace safe_sequence.h include with
	formatter.h and macros.h.
	* include/debug/deque: Include functions.tcc.
	* include/debug/forward_list: Likewise.
	* include/debug/list: Likewise.
	* include/debug/string: Likewise.
	* include/debug/vector: Likewise.
	* include/bits/unique_ptr.h: Replace debug.h include with new
	assertions.h.
	* include/bits/stl_iterator_base_funcs.h: Likewise.
	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Likewise.
	* src/c++11/debug.cc: Adapt.

From-SVN: r223877
2015-05-29 21:29:07 +00:00