Commit Graph

3460 Commits

Author SHA1 Message Date
Jonathan Wakely da2e699194 hashtable.cc (__access_protected_ctor): Define and use new type instead of _Hashtable_ebo_helper.
* include/bits/hashtable.cc (__access_protected_ctor): Define and use
	new type instead of _Hashtable_ebo_helper.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Adjust line number.

From-SVN: r204182
2013-10-29 21:19:34 +00:00
Tim Shen caaf33fa57 regex_executor.tcc: Add comments.
2013-10-28  Tim Shen  <timshen91@gmail.com>

	* regex_executor.tcc: Add comments.

From-SVN: r204117
2013-10-28 03:55:12 +00:00
Tim Shen 9f0d9611e7 regex.h: Remove unnecessary friends.
2013-10-26  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: Remove unnecessary friends.
	* include/bits/regex.tcc (__regex_algo_impl<>): Move __get_executor
	to here.
	* include/bits/regex_executor.h: Remove _DFSExecutor and _BFSExecutor;
	they are merged into _Executor. Eliminate quantifier tracking part, so
	it's faster.
	* include/bits/regex_executor.tcc: Implement _Executor.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc: New.
	* testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc: Adjust
	duplicate testcases.
	* testsuite/performance/28_regex/split.h: New.
	* testsuite/performance/28_regex/split_bfs.cc: New.
	* testsuite/util/testsuite_regex.h: Adjust behavior of two-executors
	agreement judger: do not compare match_results when executor return
	false.

From-SVN: r204093
2013-10-26 16:09:28 +00:00
Jason Merrill d4c579b561 * include/bits/hashtable.h (_Hashtable): Force EBO for _Hash_code_base.
From-SVN: r203984
2013-10-23 14:08:46 -04:00
Edward Smith-Rowland e9a6449215 basic_string.h (operator""s): Remove space between quotes and literal identifier.
2013-10-22  Edward Smith-Rowland  <3dw4rd@verizon.net>

	* include/bits/basic_string.h (operator""s): Remove space between quotes
	and literal identifier.
	* include/std/chrono (operator""h, operator""min, operator""s,
	operator""ms, operator""us, operator""ns): Ditto.

From-SVN: r203941
2013-10-23 00:12:36 +00:00
Tim Shen 603b781be4 regex.h: Remove virtual class _Automaton.
2013-10-20  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: Remove virtual class _Automaton.
	* include/bits/regex_automaton.h: Likewise.
	* include/bits/regex.tcc: Adjust comment for policy changing.
	* include/bits/regex_executor.h: Update comments of complexity.
	* include/bits/regex_executor.tcc: Adjust executor choosing
	policy. Now DFS executor is the default one.
	* testsuite/util/testsuite_regex.h (regex_match_debug,
	regex_search_debug): Adjust for policy changing.

From-SVN: r203875
2013-10-20 10:07:29 +00:00
Chris Jefferson f5b9d5e877 re PR libstdc++/58800 (std::nth_element segfaults on valid input)
2013-10-20  Chris Jefferson  <chris@bubblescope.net>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58800
	* include/bits/stl_algo.h (__unguarded_partition_pivot): Change
	__last - 2 to __last - 1.
	* testsuite/25_algorithms/nth_element/58800.cc: New

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r203872
2013-10-20 09:07:36 +00:00
Tim Shen 7948838864 regex_scanner.tcc: (_Scanner<>::_M_scan_normal...
2013-10-18  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_scanner.tcc: (_Scanner<>::_M_scan_normal,
	_Scanner<>::_M_eat_escape_ecma, _Scanner<>::_M_eat_escape_posix,
	_Scanner<>::_M_eat_escape_awk): Narrow character before finding in maps.
	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc:
	New.

From-SVN: r203827
2013-10-18 16:13:07 +00:00
Tim Shen ab1c993b94 regex.h (regex_token_iterator<>::regex_token_iterator): Fix initialization orders in initialization list and add explicit braces for...
2013-10-17  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (regex_token_iterator<>::regex_token_iterator):
	Fix initialization orders in initialization list and add explicit braces
	for potentially ambiguous(actually not) `else` branch to eliminate
	warnings.
	* include/bits/regex_automaton.h (_NFA<>::_NFA): Likewise.
	* include/bits/regex_compiler.h (_CharMatcher<>::_CharMatcher,
	_BracketMatcher<>::_BracketMatcher): Likewise.
	* include/bits/regex_compiler.tcc (_Compiler<>::_Compiler,
	_Compiler<>::_M_atom): Likewise.
	* include/bits/regex_executor.h (_Executor<>::_Executor): Likewise.
	* include/bits/regex_executor.tcc (_DFSExecutor<>::_M_dfs,
	_Executor<>::_M_word_boundry): Likewise.
	* include/bits/regex_scanner.tcc (_Scanner<>::_Scanner,
	_Scanner<>::_M_eat_class): Likewise.
	* include/bits/regex.tcc (__regex_algo_impl<>,
	regex_iterator<>::operator++): Likewise, and remove unused typedef.

From-SVN: r203798
2013-10-17 20:46:50 +00:00
Tim Shen 703344ca91 regex.h (regex_token_iterator<>::regex_token_iterator): Add initialization for _M_has_m1.
2013-10-16  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (regex_token_iterator<>::regex_token_iterator):
	Add initialization for _M_has_m1.
	* include/bits/regex.tcc (regex_token_iterator<>::operator=): Add return
	statment.

From-SVN: r203732
2013-10-16 22:28:28 +00:00
Tim Shen 96937d47ac re PR libstdc++/58737 (leak in std::regex_match)
2013-10-15  Tim Shen  <timshen91@gmail.com>

	PR libstdc++/58737
	* include/bits/regex_automaton.h (_Automaton<>::~_Automaton): Fix memory
	leak by adding it.
	* include/bits/regex_executor.h (_Executor<>::~_Executor): Likewise.

From-SVN: r203610
2013-10-15 15:01:44 +00:00
Jonathan Wakely 61bf02e007 re PR libstdc++/58659 (Construction of shared_ptr from unique_ptr mismatches new/delete and std::allocator for __shared_ptr_count)
PR libstdc++/58659
	* include/bits/shared_ptr_base.h (__shared_count::__shared_count(P,D)):
	Delegate to constructor taking allocator.
	(__shared_count::_S_create_from_up): Inline into ...
	(__shared_count::__shared_count(unique_ptr<Y,D>&&): Here. Use
	std::conditional instead of constrained overloads. Allocate memory
	using the allocator type that will be used for deallocation.
	* testsuite/20_util/shared_ptr/cons/58659.cc: New.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust.

From-SVN: r203274
2013-10-08 13:33:37 +01:00
Tim Shen 18971f1fc3 regex_executor.h: Add _TodoList class.
2013-10-08  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_executor.h: Add _TodoList class.
	* include/bits/regex_executor.tcc (_BFSExecutor<>::_M_main): Add
	_M_match_stack and _M_stack to make everything faster. Break if
	_M_stack is empty, to reduce unnecessary idling.
	* testsuite/performance/28_regex/split.cc: New.

From-SVN: r203261
2013-10-08 03:41:14 +00:00
Tim Shen 6cb4308702 regex.h: (regex_token_iterator<>::regex_token_iterator): Fix compile error.
2013-10-06  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: (regex_token_iterator<>::regex_token_iterator):
	Fix compile error.
	* include/bits/regex.tcc: (regex_replace<>): Remove default parameter.

2013-10-06  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (__regex_algo_impl<>, regex_match<>,
	regex_search<>): New abstract function for regex_match and regex_search.
	* include/bits/regex.tcc (__regex_algo_impl<>): Implement.
	* include/bits/regex_executor.h
	(_Executor<>::_M_lookahead,
	 _DFSExecutor<>::_M_clone,
	 _BFSExecutor<>::_M_clone): Let _M_clone to choose which executor to
	use.
	* include/bits/regex_executor.tcc (__get_executor<>): Update the
	definition to support __policy.
	* testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc: Use
	*_debug.
	* testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/basic/string_01.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_bracket_01.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_questionmark.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/extended/string_any.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_dispatch_01.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_range_00_03.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_range_01_03.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_range_02_03.cc: Same.
	* testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
	Same.
	* testsuite/28_regex/algorithms/regex_search/basic/string_01.cc: Same.
	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: Same.
	* testsuite/28_regex/algorithms/regex_search/ecma/flags.cc: Same.
	* testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc: Same.
	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: Same.
	* testsuite/28_regex/match_results/format.cc: Same.
	* testsuite/util/testsuite_regex.h
	(regex_match_debug<>, regex_search_debug<>): Implement.

From-SVN: r203231
2013-10-06 17:53:14 +00:00
Tim Shen 468146e0b5 regex_executor.tcc (_DFSExecutor<>::_M_dfs): Fix wrong backup variable initialization.
2013-10-03  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_executor.tcc (_DFSExecutor<>::_M_dfs): Fix wrong
	backup variable initialization.

From-SVN: r203190
2013-10-03 20:54:01 +00:00
Jonathan Wakely 3fd113d7f1 re PR libstdc++/58594 (std::make_shared does not accept const types as parameters)
PR libstdc++/58594
	* include/bits/shared_ptr_base.h
	(_Sp_counted_ptr_inplace::_M_get_deleter()): Cast away cv-quals.
	* testsuite/20_util/shared_ptr/creation/58594.cc: New.

From-SVN: r203131
2013-10-02 20:55:14 +01:00
Tim Shen 756aa0c302 2013-10-02 Tim Shen <timshen91@gmail.com>
* include/bits/regex_compiler.h
	(_BracketMatcher<>::_M_add_equivalence_class): Implement it correctly.
	* include/bits/regex_compiler.tcc (_BracketMatcher<>::operator()):
	Add _M_equiv_set support.
	* testsuite/28_regex/algorithms/regex_match/extended/
	cstring_bracket_01.cc: Add new "[[=a=]]" testcase.

From-SVN: r203117
2013-10-02 15:13:18 +00:00
Tim Shen 7d48a109d3 status_cxx2011.xml: Update regex status.
2013-10-01  Tim Shen  <timshen91@gmail.com>

	* doc/xml/manual/status_cxx2011.xml: Update regex status.
	* include/bits/regex.h (match_results<>::begin,
	match_results<>::cbegin, match_results<>::end, match_results<>::cend):
	[28.10.3.13], [28.10.3.14] Always iterate the range [0, size()-2).

From-SVN: r203096
2013-10-01 23:44:04 +00:00
Tim Shen 70b50ed7b5 re PR libstdc++/58576 (std::regex_match() reports mismatched braces on a valid regex)
2013-10-01  Tim Shen  <timshen91@gmail.com>

	PR libstdc++/58576
	* include/bits/regex_automaton.tcc (_NFA<>::_M_eliminate_dummy)
	(_StateSeq<>::_M_clone): Add _S_opcode_subexpr_lookahead branch.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc: New.

From-SVN: r203067
2013-10-01 15:26:50 +00:00
Chris Jefferson a10bad862f re PR libstdc++/58437 (Sorting value in reverse order is much slower compare to gcc44)
2013-09-30  Chris Jefferson  <chris@bubblescope.net>

	PR libstdc++/58437
	* include/bits/stl_algo.h (__move_median_first): Rename to
	__move_median_to_first, change to take an addition argument.
	(__unguarded_partition_pivot): Adjust.
	* testsuite/performance/25_algorithms/sort.cc: New.
	* testsuite/performance/25_algorithms/sort_heap.cc: Likewise.
	* testsuite/performance/25_algorithms/stable_sort.cc: Likewise.

From-SVN: r203035
2013-09-30 17:42:31 +00:00
François Dumont 3bd2644c00 stl_algo.h (remove_copy, [...]): Declare inline.
2013-09-28  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_algo.h (remove_copy, remove_copy_if): Declare
	inline.
	(rotate_copy, stable_partition, partial_sort_copy): Likewise.
	(lower_bound, upper_bound, equal_range, inplace_merge): Likewise.
	(includes, next_permutation, prev_permutation): Likewise.
	(replace_copy, replace_copy_if, is_sorted_until): Likewise.
	(minmax_element, is_permutation, adjacent_find): Likewise.
	(count, count_if, search, search_n, merge): Likewise.
	(set_intersection, set_difference): Likewise.
	(set_symmetric_difference, min_element, max_element): Likewise.
	* include/bits/stl_algobase.h (lower_bound): Likewise.
	(lexicographical_compare, mismatch): Likewise.

From-SVN: r203008
2013-09-28 20:30:51 +00:00
Tim Shen 8d60fca50e regex_scanner.tcc (_Scanner<>::_M_eat_escape_posix): Let ordinary char escaping in POSIX be valid.
2013-09-28  Tim Shen <timshen91@gmail.com>

	* include/bits/regex_scanner.tcc (_Scanner<>::_M_eat_escape_posix):
	Let ordinary char escaping in POSIX be valid.
	* testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: Test this
	change.

From-SVN: r203005
2013-09-28 13:41:09 +00:00
François Dumont ea89b2482f predefined_ops.h: New.
2013-09-27  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/predefined_ops.h: New.
	* include/bits/stl_heap.h: Include <bits/predefined_ops.h>.
	(__is_heap_until, __push_heap, __adjust_heap, __pop_heap): Remove
	algo duplication.
	(__is_heap): Adapt.
	(__make_heap): New.
	(make_heap): Adapt to use latter.
	(__sort_heap): New.
	(sort_heap): Adapt to use latter.
	* include/bits/algobase.h: Include <bits/predefined_ops.h>.
	(__lexicographical_compare_impl): New.
	(__lexicographical_compare<false>::__lc): Adapt to use latter.
	(lexicographical_compare): Likewise.
	(__lower_bound): New.
	(lower_bound): Adapt to use latter.
	(equal): Use _GLIBCXX_STD_A::equal in N3671 overloads.
	(__mismatch): New.
	(mismatch): Use latter.
	* include/bits/algo.h: Include <bits/predefined_ops.h>. Remove
	<functional> include.
	(__move_median_first, __find, __find_if, __find_if_not): Remove
	algo duplication.
	(__find_end): Likewise.
	(__search_n): Rename into ...
	(__search_n_aux): ... this.
	(__search_n): Renew, use latter.
	(search_n): Use latter.
	(__search): New.
	(search): Use latter.
	(__find_end): Likewise.
	(__remove_copy_if): New.
	(remove_copy): Use latter.
	(__adjacent_find): New.
	(adjacent_find): Use latter.
	(__unique): New.
	(unique): Use latter.
	(__unique_copy): Remove algo duplication.
	(__stable_partition): New.
	(stable_partition): Use latter.
	(__heap_select): Remove algo duplication, use __make_heap.
	(__partial_sort): New, use latter.
	(partial_sort): Use latter.
	(__partial_sort_copy): New.
	(partial_sort_copy): Use latter.
	(__unguarded_linear_insert, __insertion_sort): Remove algo
	duplication.
	(__unguarded_insertion_sort, __final_insertion_sort): Likewise.
	(__unguarded_partition, __unguarded_partition_pivot): Likewise.
	(__partial_sort): New.
	(partial_sort): Use latter.
	(__sort): New.
	(sort): Use latter.
	(lower_bound): Use __lower_bound.
	(__upper_bound): New.
	(upper_bound): Use latter.
	(__equal_range): New.
	(equal_range): Use latter.
	(__move_merge_adaptive, __move_merge_adaptive_backward): Remove
	algo duplication.
	(__merge_adaptive, __merge_without_buffer): Likewise.
	(__inplace_merge): New.
	(inplace_merge): Use latter.
	(__move_merge, __merge_sort_loop, __chunk_insertion_sort): Remove
	algo duplication.
	(__merge_sort_with_buffer, __stable_sort_adaptive): Likewise.
	(__inplace_stable_sort): Likewise.
	(__include): New.
	(includes): Use latter.
	(__next_permutation): New.
	(next_permutation): Use latter.
	(__prev_permutation): New.
	(prev_permutation): Use latter.
	(__replace_copy_if): New.
	(replace_copy): Use latter.
	(__is_sorted_until): New.
	(is_sorted_unitl): Use latter.
	(__minmax_element): New.
	(minmax_element): Use latter.
	(__is_permutation): New.
	(is_permutation): Use latter.
	(__adjacent_find): New.
	(adjacent_find): Use latter.
	(__count_if): New.
	(count): Use latter.
	(count_if): Likewise.
	(__merge): New.
	(merge): Use latter.
	(__stable_sort): New.
	(stable_sort): Use latter.
	(__set_union): New.
	(set_union): Use latter.
	(__set_intersection): New.
	(set_intersection): Use latter.
	(__set_difference): New.
	(set_difference): Use latter.
	(__set_symmetric_difference): New.
	(set_symmetric_difference): Use latter.
	(__min_element): New.
	(min_element): Use latter.
	(__max_element): New.
	(max_element): Use latter.
	* include/Makefile.am: Add predefined_ops.h.
	* include/Makefile.in: Regenerate.
	* include/parallel/algobase.h (equal, mismatch): Add overloads
	from N3671.
	* testsuite/25_algorithms/is_permutation/vectorbool.cc: New.
	* testsuite/25_algorithms/adjacent_find/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/find/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/find_if/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/find_first_of/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/heap/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/find_end/vectorbool.cc: Likewise.
	* testsuite/25_algorithms/find_if_not/vectorbool.cc: Likewise.

From-SVN: r202992
2013-09-27 21:17:36 +00:00
Tim Shen d4e1260101 regex_error.h: Remove _S_error_last to follow the standard.
2013-09-26  Tim Shen  <timshen91@gmail.com>

	* regex_error.h: Remove _S_error_last to follow the standard.
	* regex_scanner.tcc:
	(_Scanner<_FwdIter>::_M_scan_in_brace): Change error_brace to
	error_badbrace.
	(_Scanner<>::_M_eat_escape_posix): Extended doesn't support
	back-reference.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc:
	Move here from ../../extended.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc:
	Likewise.

From-SVN: r202958
2013-09-26 21:48:04 +00:00
Marc Glisse 34e6625aa2 re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-25  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/forward_list.h (_Fwd_list_node_base::_M_transfer_after):
	Mark as noexcept.
	(_Fwd_list_iterator) [_Fwd_list_iterator, operator*, operator->,
	operator++, operator==, operator!=, _M_next]: Likewise.
	(_Fwd_list_const_iterator) [_Fwd_list_const_iterator, operator*,
	operator->, operator++, operator==, operator!=, _M_next]: Likewise.
	(operator==(const _Fwd_list_iterator&, const _Fwd_list_const_iterator&),
	operator!=(const _Fwd_list_iterator&, const _Fwd_list_const_iterator&)):
	Likewise.
	* include/bits/hashtable_policy.h (_Hash_node_base::_Hash_node_base,
	_Hash_node::_M_next, _Node_iterator_base::_Node_iterator_base,
	_Node_iterator_base::_M_incr, operator==(const _Node_iterator_base&,
	const _Node_iterator_base&), operator!=(const _Node_iterator_base&,
	const _Node_iterator_base&)): Likewise.
	(_Node_iterator) [_Node_iterator, operator*, operator->, operator++]:
	Likewise.
	(_Node_const_iterator) [_Node_const_iterator, operator*, operator->,
	operator++]: Likewise.
	* include/debug/safe_iterator.h (_Safe_iterator) [_Safe_iterator,
	operator=, operator*, operator->, operator++, operator--, operator[],
	operator+=, operator+, operator-=, operator-, base, operator _Iterator]:
	Likewise.
	(operator==(const _Safe_iterator&, const _Safe_iterator&),
	operator!=(const _Safe_iterator&, const _Safe_iterator&),
	operator<(const _Safe_iterator&, const _Safe_iterator&),
	operator<=(const _Safe_iterator&, const _Safe_iterator&),
	operator>(const _Safe_iterator&, const _Safe_iterator&),
	operator>=(const _Safe_iterator&, const _Safe_iterator&),
	operator-(const _Safe_iterator&, const _Safe_iterator&),
	operator+(difference_type, const _Safe_iterator&)): Likewise.
	* include/profile/iterator_tracker.h (__iterator_tracker)
	[__iterator_tracker, base, operator _Iterator, operator->, operator++,
	operator--, operator=, operator*, operator[], operator+=, operator+,
	operator-=, operator-]: Likewise.
	(operator==(const __iterator_tracker&, const __iterator_tracker&),
	operator!=(const __iterator_tracker&, const __iterator_tracker&),
	operator<(const __iterator_tracker&, const __iterator_tracker&),
	operator<=(const __iterator_tracker&, const __iterator_tracker&),
	operator>(const __iterator_tracker&, const __iterator_tracker&),
	operator>=(const __iterator_tracker&, const __iterator_tracker&),
	operator-(const __iterator_tracker&, const __iterator_tracker&),
	operator+(difference_type, const __iterator_tracker&)): Likewise.

From-SVN: r202924
2013-09-25 20:28:12 +00:00
Marc Glisse 63ebd8f129 re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-24  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	PR libstdc++/56166
	* include/bits/basic_string.h (basic_string)
	[basic_string(basic_string&&)]: Make the noexcept conditional.
	[operator=(basic_string&&), assign(basic_string&&)]: Link to PR 58265.
	[begin(), end(), rbegin(), rend(), clear]: Remove noexcept.
	[pop_back]: Comment on the lack of noexcept.
	* include/debug/string (basic_string) [basic_string(const _Allocator&),
	basic_string(basic_string&&), begin(), end(), rbegin(), rend(), clear,
	operator[](size_type), pop_back]: Comment out noexcept, until vstring
	replaces basic_string.

From-SVN: r202861
2013-09-24 10:07:32 +00:00
Tim Shen c2669da93d Makefile.am: Add regex.tcc.
2013-09-24  Tim Shen  <timshen91@gmail.com>

	* include/Makefile.am: Add regex.tcc.
	* include/Makefile.in: Regenerate.
	* include/bits/regex.h: Remove definitions to regex.tcc.
	* include/bits/regex.tcc: New.
	(match_results::format, regex_replace): Implement;
	* include/bits/regex_compiler.h: Move _M_flags to the top of class
	member list, because other members' initialization depend on it.
	* include/bits/regex_compiler.tcc
	(_Compiler<>::_Compiler): Adjust member initializations.
	(_Compiler<>::_M_quantifier): Fix ungreedy interval quantifier.
	* include/bits/regex_executor.h: Remove _RegexT from _*Executor classes.
	In the future, all regex classes may refactor to *Impl style.
	* include/bits/regex_executor.tcc (_Executor::_M_set_results):
	Merge identical code from _*Executor classes.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_dispatch_01.cc (fake_match<>): Adjust the hacking-style testcase
	caller for new __get_executors interface.
	* testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc:
	New.
	* testsuite/28_regex/match_results/format.cc: New.
	* testsuite/28_regex/traits/char/lookup_collatename.cc: Remove digraph
	testcase.
	* testsuite/28_regex/traits/wchar_t/lookup_collatename.cc: Likewise.

From-SVN: r202858
2013-09-24 02:05:00 +00:00
Paul Pluzhnikov 9779c871af Print additional info when various out-of-range conditions are detected.
2013-09-21  Paul Pluzhnikov  <ppluzhnikov@google.com>

	* include/bits/functexcept.h (__throw_out_of_range_fmt): New.
	* src/c++11/functexcept.cc (__throw_out_of_range_fmt): New.
	* src/c++11/snprintf_lite.cc: New.
	* src/c++11/Makefile.am: Add snprintf_lite.cc.
	* src/c++11/Makefile.in: Regenerate.
	* config/abi/pre/gnu.ver: Add _ZSt24__throw_out_of_range_fmtPKcz.
	* include/std/array (at): Use __throw_out_of_range_fmt.
	* include/debug/array (at): Likewise.
	* include/profile/array (at): Likewise.
	* include/std/bitset (_M_check_initial_position, _M_check): New.
	(bitset::bitset): Use _M_check_initial_position.
	(set, reset, flip, test): Use _M_check.
	* include/ext/vstring.h (_M_check, at): Use __throw_out_of_range_fmt.
	* include/bits/stl_vector.h (_M_range_check): Likewise.
	* include/bits/stl_bvector.h (_M_range_check): Likewise.
	* include/bits/stl_deque.h (_M_range_check): Likewise.
	* include/bits/basic_string.h (_M_check, at): Likewise.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Adjust.
	* testsuite/23_containers/vector/requirements/dr438/insert_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/deque/requirements/dr438/assign_neg.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Likewise.
	* 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/array/tuple_interface/tuple_element_neg.cc: Likewise.
	* testsuite/23_containers/array/tuple_interface/tuple_element_debug_neg.cc:
	Likewise.
	* testsuite/23_containers/array/tuple_interface/get_neg.cc: Likewise.
	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: Likewise.
	* testsuite/util/exception/safety.h (generate): Use __throw_out_of_range_fmt.

From-SVN: r202818
2013-09-21 19:04:13 -07:00
Marc Glisse d15ac9d9a3 re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-20  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/allocator.h (__alloc_swap::_S_do_it,
	__shrink_to_fit_aux::_S_do_it): Mark as noexcept.
	* include/bits/basic_string.h (basic_string::_Rep) [_S_empty_rep,
	_M_is_leaked, _M_is_shared, _M_set_leaked, _M_set_sharable,
	_M_set_length_and_sharable, _M_dispose]: Likewise.
	(basic_string::_Alloc_hider::_Alloc_hider): Likewise.
	(basic_string) [_M_data, _M_rep, _M_ibegin, _M_iend, _M_limit,
	_M_disjunct, _M_copy, _M_move, _M_assign, _S_copy_chars, _S_compare,
	_S_empty_rep, shrink_to_fit, operator[] const, front const, back const]:
	Likewise.
	[clear]: Link to PR 56166.
	[swap]: Link to PR 58265.
	* include/bits/stl_deque.h (_Deque_iterator) [_S_buffer_size,
	_Deque_iterator, _M_const_cast, operator*, operator->, operator++,
	operator--, operator+=, operator+, operator-=, operator-, operator[],
	_M_set_node]: Mark as noexcept.
	(operator==(const _Deque_iterator&, const _Deque_iterator&),
	operator!=(const _Deque_iterator&, const _Deque_iterator&),
	operator<(const _Deque_iterator&, const _Deque_iterator&),
	operator>(const _Deque_iterator&, const _Deque_iterator&),
	operator<=(const _Deque_iterator&, const _Deque_iterator&),
	operator>=(const _Deque_iterator&, const _Deque_iterator&),
	operator-(const _Deque_iterator&, const _Deque_iterator&),
	operator+(ptrdiff_t, const _Deque_iterator&)): Likewise.
	(_Deque_base) [_Deque_base(const allocator_type&)]: Add missing call to
	_M_initialize_map.
	[~_Deque_base, _M_deallocate_node, _M_deallocate_map, _M_destroy_nodes]:
	Mark as noexcept.
	(_Deque_base::_Deque_impl) [_Deque_impl(const _Tp_alloc_type&),
	_Deque_impl(_Tp_alloc_type&&)]: Likewise.
	(deque) [_S_buffer_size, operator=(deque&&), shrink_to_fit, operator[],
	front, back, pop_front, pop_back, swap]: Likewise.
	[deque(), deque(const allocator_type&)]: Merge.
	* include/debug/deque (deque) [operator=(deque&&), shrink_to_fit,
	operator[], front, back, pop_front, pop_back, swap]: Mark as noexcept.
	* include/profile/deque (deque) [operator=(deque&&), operator[], front,
	back, pop_front, pop_back, swap]: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
	Adjust 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.

From-SVN: r202781
2013-09-20 15:50:09 +00:00
Marc Glisse 0e1a966a86 re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-19  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/stl_tree.h (_Rb_tree_node_base) [_S_minimum, _S_maximum]:
	Mark as noexcept.
	(_Rb_tree_iterator) [_Rb_tree_iterator, operator*, operator->,
	operator++, operator--, operator==, operator!=]: Likewise.
	(_Rb_tree_const_iterator) [_Rb_tree_const_iterator, _M_const_cast,
	operator*, operator->, operator++, operator--, operator==, operator!=]:
	Likewise.
	(operator==(const _Rb_tree_iterator&, const _Rb_tree_const_iterator&),
	operator!=(const _Rb_tree_iterator&, const _Rb_tree_const_iterator&)):
	Likewise.
	(_Rb_tree) [_M_put_node, _M_destroy_node, _M_root, _M_leftmost,
	_M_rightmost, _M_begin, _M_end, _S_left, _S_right, _S_minimum,
	_S_maximum]: Likewise.
	* include/debug/string (basic_string) [basic_string(const _Allocator&),
	shrink_to_fit, operator[], pop_back]: Likewise.
	* include/ext/vstring.h (__versa_string) [_M_limit, _M_disjunct,
	_M_ibegin, _M_iend, __versa_string(const _Alloc&),
	operator=(__versa_string&&), shrink_to_fit, operator[], front,
	back, assign(__versa_string&&), swap]: Likewise.
	(__versa_string) [__versa_string(), __versa_string(const _Alloc&)]:
	Merge.

From-SVN: r202737
2013-09-19 11:40:29 +00:00
Marc Glisse b4efa80e56 re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-18  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/stl_iterator.h (__normal_iterator) [__normal_iterator,
	_M_const_cast, operator*, operator->, operator++, operator--,
	operator[], operator+=, operator+, operator-=, operator-, base]:
	Mark as noexcept.
	(operator==(const __normal_iterator&, const __normal_iterator&),
	operator!=(const __normal_iterator&, const __normal_iterator&),
	operator<(const __normal_iterator&, const __normal_iterator&),
	operator>(const __normal_iterator&, const __normal_iterator&),
	operator<=(const __normal_iterator&, const __normal_iterator&),
	operator>=(const __normal_iterator&, const __normal_iterator&),
	operator-(const __normal_iterator&, const __normal_iterator&),
	operator+(difference_type, const __normal_iterator&)): Likewise.
	* include/bits/stl_list.h (list) [splice, _M_check_equal_allocators]:
	Likewise.
	(list::_M_check_equal_allocators): Abort instead of throwing.
	* include/debug/array (array) [operator[], front, back]: Mark as
	noexcept.
	* include/profile/array (array) [operator[], front, back]: Likewise.
	* include/std/array (array) [operator[], front, back]: Likewise.
	* include/debug/list (list::splice): Likewise.
	* include/profile/list (list::splice): Likewise.
	* testsuite/23_containers/list/operations/5.cc: Remove file.
	* testsuite/23_containers/list/operations/5.h: Likewise.

From-SVN: r202716
2013-09-18 18:31:01 +00:00
Tim Shen b21abceec3 regex.h: Add friend classes.
2013-09-18  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: Add friend classes.
	(match_results<>::position, regex_iterator<>::operator++):
	Implement position specification in regex_iterator.
	(regex_match<>, regex_search<>):
	Move match_results initializations to these function. Remove `todo`.
	* include/bits/regex_compiler.tcc:
	(_Compiler<>::_M_quantifier): Fix greedy/ungreedy of interval matching.
	* include/bits/regex_constants.h:
	Fix indentation. Change match_flag_type to enum type.
	* include/bits/regex_executor.h:
	Merge identical code to the base class _Executor.
	Support flags in regex_constants.
	* include/bits/regex_executor.tcc: Likewise.
	* include/bits/regex_scanner.h: Add comments.
	* include/bits/regex_scanner.tcc: Same.
	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc:
	Add a testcase.
	* testsuite/28_regex/algorithms/regex_search/ecma/flags.cc: New.
	* testsuite/28_regex/iterators/regex_iterator/char/
	string_position_01.cc: Remove `xfail`.
	* testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc:
	Remove `xfail` and make the case really work.

From-SVN: r202706
2013-09-18 15:56:20 +00:00
Marc Glisse 837bf5116d re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-18  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/list.tcc (_List_base::_M_clear, list::erase): Mark as
	noexcept.
	* include/bits/stl_list.h (_List_iterator) [_List_iterator,
	_M_const_cast, operator*, operator->, operator++, operator--,
	operator==, operator!=]: Likewise.
	(_List_const_iterator) [_List_const_iterator, _M_const_cast, operator*,
	operator->, operator++, operator--, operator==, operator!=]: Likewise.
	(operator==(const _List_iterator&, const _List_const_iterator&),
	operator!=(const _List_iterator&, const _List_const_iterator&)):
	Likewise.
	(_List_impl) [_List_impl(const _Node_alloc_type&),
	_List_impl(_Node_alloc_type&&)]: Likewise.
	(_List_base) [_M_put_node, _List_base(const _Node_alloc_type&),
	_List_base(_List_base&&), _M_clear, _M_init]: Likewise.
	(list) [list(), list(const allocator_type&)]: Merge.
	(list) [list(const allocator_type&), front, back, pop_front, pop_back,
	erase, _M_erase]: Mark as noexcept.
	* include/debug/list (list) [list(const _Allocator&), front, back,
	pop_front, pop_back, _M_erase, erase]: Likewise.
	* include/profile/list (list) [list(const _Allocator&), front, back,
	pop_front, pop_back, erase]: Likewise.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust line number.
	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc:
	Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r202699
2013-09-18 11:21:51 +00:00
Marc Glisse 757b16440b re PR libstdc++/58338 (Add noexcept to functions with a narrow contract)
2013-09-17  Marc Glisse  <marc.glisse@inria.fr>

	PR libstdc++/58338
	* include/bits/stl_vector.h (vector::vector(),
	vector::vector(const allocator_type&)): Merge.
	(_Vector_impl::_Vector_impl(_Tp_alloc_type const&),
	_Vector_impl::_Vector_impl(_Tp_alloc_type&&),
	_Vector_impl::_M_swap_data,
	_Vector_base::_Vector_base(const allocator_type&),
	_Vector_base::_Vector_base(allocator_type&&),
	_Vector_base::_Vector_base(_Vector_base&&), _Vector_base::~_Vector_base,
	vector::vector(const allocator_type&), vector::operator[],
	vector::operator[] const, vector::front, vector::front const,
	vector::back, vector::back const, vector::pop_back,
	vector::_M_erase_at_end): Mark as noexcept.
	* include/debug/vector (vector::vector(const _Allocator&),
	vector::operator[], vector::operator[] const, vector::front,
	vector::front const, vector::back, vector::back const, vector::pop_back,
	_M_requires_reallocation, _M_update_guaranteed_capacity,
	_M_invalidate_after_nth): Mark as noexcept.
	* include/profile/vector (vector::vector(const _Allocator&),
	vector::operator[], vector::operator[] const, vector::front,
	vector::front const, vector::back, vector::back const): Mark as
	noexcept.
	(vector::vector(vector&&, const _Allocator&)): Remove wrong noexcept.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust line number.
	* 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: r202650
2013-09-17 12:23:54 +00:00
Tim Shen 7b86458e38 regex.h (regex_match<>, [...]): Change regex_executor caller.
2013-09-14  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (regex_match<>, regex_search<>):
	Change regex_executor caller. Now use their return value instead
	of checking __m[0].matched to find out if it's successful.
	(regex_search<>): Move the search logic to regex_executor.
	* include/bits/regex_automaton.h: Add some new _Opcode. Refactor
	_NFA::_M_insert_*.
	* include/bits/regex_automaton.tcc: Add DEBUG dump for new
	_Opcode. Refactor _NFA::_M_insert_*.
	* include/bits/regex_compiler.h (_Compiler<>::_M_get_nfa):
	Use make_shared instead of construct by hand.
	* include/bits/regex_compiler.tcc: Implement _Compiler<>::_M_assertion.
	* include/bits/regex_constants.h: Fix indentation and line breaking.
	* include/bits/regex_executor.h: Add _ResultsEntry to support
	greedy/ungreedy mode. Move regex_search logic here.
	* include/bits/regex_executor.tcc: Implement assertions and
	greedy/ungreedy matching.
	* include/bits/regex_scanner.h: Add a new token _S_token_ungreedy.
	* include/bits/regex_scanner.tcc: Parse a new token _S_token_ungreedy.
	* testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: New.
	* testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc: New.
	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc:
	Fix comment.

From-SVN: r202591
2013-09-14 14:23:44 +00:00
Paolo Carlini 274ddab613 re PR libstdc++/58403 (__normal_iterator triggers odr-use)
2013-09-12  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58403
	* include/bits/stl_iterator.h (__normal_iterator<>::operator[],
	operator+=, operator+, operator-=, operator-): Take the argument
	by value.
	* testsuite/24_iterators/normal_iterator/58403.cc: New.

From-SVN: r202531
2013-09-12 15:15:34 +00:00
Mitsuru Kariya 4b47d65500 re PR libstdc++/58358 (search_n has a Complexity violation for random access iterator)
2013-09-11  Mitsuru Kariya  <kariya_mitsuru@hotmail.com>
	    Chris Jefferson  <chris@bubblescope.net>

	PR libstdc++/58358
	* include/bits/stl_algo.h (search_n): Fix to guarantee a number
	of comparisons <= number of elements in the range.
	* testsuite/25_algorithms/search_n/58358.cc: New.
	* testsuite/25_algorithms/search_n/iterator.cc: Extend.

Co-Authored-By: Chris Jefferson <chris@bubblescope.net>

From-SVN: r202510
2013-09-11 22:24:50 +00:00
Paolo Carlini 9a7fb488e3 re PR libstdc++/58341 (Doc conflicts with standard on forbidden range of `result` in copy_backward())
2013-09-07  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58341
	* include/bits/stl_algobase.h (copy_backward): Fix documentation
	per DR 1206.

From-SVN: r202357
2013-09-07 22:57:49 +00:00
Tim Shen 7c812a2a57 regex_automaton.h: Add dummy node type.
2013-09-05  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_automaton.h: Add dummy node type. Rewrite
	_StateSeq.
	* include/bits/regex_automaton.tcc: Implement them.
	* include/bits/regex_compiler.h: Rewrite _Compiler to use new
	_StateSeq interfaces.
	* include/bits/regex_compiler.tcc: Implement them.
	* include/bits/regex_scanner.h: Add word boundry assertion token.
	* include/bits/regex_scanner.tcc (_Scanner<>::_M_eat_escape_ecma):
	Support word boundry.
	* testsuite/28_regex/algorithms/regex_match/basic/
	string_range_02_03.cc: Remove "xfail".
	* testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc:
	Likewise.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_range_02_03.cc: Likewise.
	* testsuite/28_regex/algorithms/regex_match/extended/
	cstring_questionmark.cc: Remove xfail and get correct length of
	c-string.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_range_00_03.cc: Likewise.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc:
	New.
	* testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc:
	New.
	* testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc: New.

From-SVN: r202290
2013-09-05 15:20:39 +00:00
Paolo Carlini e5fbc9fc72 re PR libstdc++/58302 (compilation error : std::negative_binomial_distribution::operator(e, p))
2013-09-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58302
	* include/bits/random.tcc (negative_binomial_distribution<>::
	operator()(_UniformRandomNumberGenerator&, const param_type&):
	Fix typo in template argument.
	* testsuite/26_numerics/random/negative_binomial_distribution/
	operators/58302.cc: New.

From-SVN: r202208
2013-09-03 10:12:19 +00:00
Tim Shen e350969184 regex_automaton.h: Rearrange _NFA's layout.
2013-09-02  Tim Shen  <timshen91@gmail.com>

	* regex_automaton.h: Rearrange _NFA's layout.
	* include/bits/regex_compiler.h: Add _AnyMatcher and _CharMatcher.
	  Rearrange _BracketMatcher's layout.
	  (_BracketMatcher<>::_M_add_char): Use set instead of vector for
	  _M_char_set.
	  (_BracketMatcher<>::_M_add_collating_element): Likewise.
	  (_BracketMatcher<>::_M_make_range): Likewise.
	* include/bits/regex_compiler.tcc (_Compiler<>::_M_atom): Use
	  apropriate constructors of matchers above.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc:
	  New.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: New.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc:
	  New.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc:
	  New.
	* testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc: New.
	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc:
	  New.
	* testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: New.

From-SVN: r202189
2013-09-02 22:20:56 +00:00
Tim Shen 9222fb6f08 regex.h (basic_regex<>::assign): Don't lose _M_traits.
2013-08-29  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (basic_regex<>::assign): Don't lose _M_traits.
	  (regex_iterator<>::regex_iterator): Return nullptr when regex_search
	     failed.
	  (regex_token_iterator<>::_M_end_of_seq): Should be defined true when
	    _M_result is(not isn't) nullptr.
	* include/bits/regex_compiler.h: Store _Compiler::_M_traits by reference
	  instead of by value.
	* include/bits/regex_executor.h (_DFSExecutor<>::_DFSExecutor): Add
	  _M_traits to _DFSExecutor.
	* include/bits/regex_executor.tcc (__get_executor<>): Pass traits to
	  _DFSExecutor too.
	* testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc:
	  New.
	* testsuite/28_regex/iterators/regex_token_iterator/wchar_t/
	  wstring_02.cc: New.

From-SVN: r202082
2013-08-29 18:33:07 +00:00
Tim Shen 33fbbb766c Makefile.am: Add regex_scanner.{h,tcc}.
2013-08-26  Tim Shen  <timshen91@gmail.com>

	* include/Makefile.am: Add regex_scanner.{h,tcc}.
	* include/Makefile.in: Regenerate.
	* include/bits/regex.h (match_search): Handle the `__first == __last`
	  situation correctly.
	* include/bits/regex_compiler.h: Move _Scanner...
	* include/bits/regex_scanner.h: ...to here. New.
	* include/bits/regex_compiler.tcc: Move _Scanner...
	* include/bits/regex_scanner.tcc: ...to here, too. New.
	* include/bits/regex_executor.tcc: Use value instead of reference for
	  submatch.
	* include/std/regex: Add regex_scanner.h
	* testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc: New.
	* testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc: New.
	* testsuite/28_regex/algorithms/regex_match/ecma/cstring_hex.cc: New.
	* testsuite/28_regex/algorithms/regex_match/ecma/empty_range.cc: New.
	* testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: New.

From-SVN: r202015
2013-08-27 02:49:22 +00:00
Tim Shen e280b6ffe7 regex.h: Replace 8 spaces in indentation with a tab.
2013-08-22  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: Replace 8 spaces in indentation with a tab.
	* include/bits/regex_automaton.h: Same.
	* include/bits/regex_automaton.tcc: Same.
	* include/bits/regex_compiler.h: Same.
	* include/bits/regex_compiler.tcc: Same.
	* include/bits/regex_constants.h: Same.
	* include/bits/regex_executor.h: Same.
	* include/bits/regex_executor.tcc: Same.

From-SVN: r201916
2013-08-22 09:01:38 +00:00
Tim Shen 1b488e33b6 regex.h: Executor caller.
2013-08-22  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h: Executor caller.
	* include/bits/regex_executor.h: Fix empty grouping problem.
	* include/bits/regex_executor.tcc: Same.
	* testsuite/28_regex/algorithms/regex_match/ecma/cstring_emptygroup.cc:
	  New.

From-SVN: r201914
2013-08-22 00:58:28 +00:00
Tim Shen f6f0407c4c regex_constants.h: Add underlying `unsigned int` for enum syntax_option_type.
2013-08-20  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_constants.h: Add underlying `unsigned int` for
	  enum syntax_option_type.

From-SVN: r201872
2013-08-20 10:36:42 +00:00
Tim Shen ce645eb091 regex_automaton.h: _S_opcode_backref.
2013-08-18  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_automaton.h: _S_opcode_backref.
	* include/bits/regex_automaton.tcc: Backref automaton support.
	* include/bits/regex_compiler.tcc: Parsing support.
	* include/bits/regex_executor.h: Add _M_traits for _DFSExecutor.
	* include/bits/regex_executor.tcc: Add _S_opcode_backref support.
	* testsuite/28_regex/algorithms/regex_match/ecma/string_backref.cc: New.

From-SVN: r201825
2013-08-18 13:55:48 +00:00
Tim Shen 5073d50905 regex.h (regex_traits<>::transform_primary): Avoid past-the-end dereferences.
2013-08-16  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex.h (regex_traits<>::transform_primary):
	Avoid past-the-end dereferences.

From-SVN: r201783
2013-08-16 09:06:31 +00:00
Paolo Carlini 56b5d3b48b re PR libstdc++/58163 ([C++11] Pedantic assert on str[str.size()] is wrong in C++11)
2013-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58163
	* include/bits/basic_string.h (basic_string<>::operator[]): Fix
	_GLIBCXX_DEBUG_PEDASSERT check vs C++11.
	* include/ext/vstring.h: Likewise.
	* testsuite/21_strings/basic_string/element_access/char/58163.cc:
	New.
	* testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc:
	Likewise.
	* testsuite/ext/vstring/element_access/char/58163.cc: Likewise.
	* testsuite/ext/vstring/element_access/wchar_t/58163.cc: Likewise.

From-SVN: r201755
2013-08-15 00:15:12 +00:00
Tim Shen 6646d624d0 regex_constants.h: Change syntax_option_type to enum type.
2013-08-09  Tim Shen  <timshen91@gmail.com>

	* include/bits/regex_constants.h: Change syntax_option_type to enum
	type.

From-SVN: r201621
2013-08-09 07:53:28 +00:00
Rainer Orth 374cf1652d Don't use _B etc. in libstdc++
* include/bits/regex.h: Replace _A, _B, _C, _R by _Ap, _Bp,
	_Cp, _Rp.

From-SVN: r201596
2013-08-08 13:34:12 +00:00
François Dumont b09bcf83e8 hashtable_policy.h (_Hashtable_alloc): New.
2013-08-08  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Hashtable_alloc): New.
	(_ReuseOrAllocNode, _AllocNode): Adapt to use latter rather than
	_Hashtable.
	(_Before_begin<>): Remove.
	* include/bits/hashtable.h (_Hashtable): Inherit from
	_Hashtable_alloc and adapt. Restore _M_before_begin field.
	* src/c++11/hashtable_c++0x.cc: Add ext/alloc_traits.h include.
	* python/libstdcxx/v6/printers.py (StdHashtableIterator): Adapt
	access to hashtable before begin.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Adapt dg-error line number.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Likewise.

From-SVN: r201592
2013-08-08 09:47:29 +00:00
Tim Shen 6cb784b639 Makefile.am: Adjust to new files.
2013-08-07  Tim Shen  <timshen91@gmail.com>

	* include/Makefile.am: Adjust to new files.
	* include/Makefile.in: Regenerate.
	* include/bits/regex.h: Adjust to new interfaces.
	* include/bits/regex_automaton.h: New.
	* include/bits/regex_automaton.tcc: New.
	* include/bits/regex_compiler.h: Adjust to new files.
	* include/bits/regex_compiler.tcc: New.
	* include/bits/regex_constants.h: Tail spaces.
	* include/bits/regex_error.h: Likewise.
	* include/bits/regex_executor.h: New.
	* include/bits/regex_executor.tcc: New.
	* include/std/regex: Adjust to new files.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_dispatch_01.cc: Adjust to new interfaces.

From-SVN: r201573
2013-08-07 16:27:36 +00:00
Paolo Carlini a803975d9c re PR libstdc++/58098 (wrong return value of normal_distribution::min())
2013-08-07  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/58098
	* include/bits/random.h (cauchy_distribution<>::min,
	extreme_value_distribution<>::min, normal_distribution<>::min,
	student_t_distribution<>::min): Fix.
	* include/ext/random (normal_mv_distribution<>::min): Likewise.
	* testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc:
	Adjust.
	testsuite/26_numerics/random/cauchy_distribution/cons/default.cc:
	Likewise.
	* testsuite/26_numerics/random/extreme_value_distribution/cons/
	parms.cc: Likewise.
	testsuite/26_numerics/random/extreme_value_distribution/cons/
	default.cc: Likewise.
	* testsuite/26_numerics/random/normal_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/normal_distribution/cons/default.cc:
	Likewise.
	* testsuite/26_numerics/random/student_t_distribution/cons/parms.cc:
	Likewise.
	* testsuite/26_numerics/random/student_t_distribution/cons/default.cc:
	Likewise.
	* testsuite/ext/random/normal_mv_distribution/cons/parms.cc: Likewise.
	* testsuite/ext/random/normal_mv_distribution/cons/default.cc: Likewise.

	* testsuite/26_numerics/random/exponential_distribution/cons/parms.cc:
	Minor tweak.
	* testsuite/26_numerics/random/exponential_distribution/cons/default.cc:
	Likewise.

	* testsuite/ext/von_mises_distribution/*: Move to...
	* testsuite/ext/random/von_mises_distribution/*: ... here.
	* testsuite/ext/triangular_distribution/*: Move to...
	* testsuite/ext/random/triangular_distribution/*: ... here.

From-SVN: r201562
2013-08-07 11:41:30 +00:00
Paolo Carlini 6ffd1096cf 2013-08-06 Paolo Carlini <paolo.carlini@oracle.com>
Revert the last commit.

From-SVN: r201525
2013-08-06 11:11:07 +00:00
François Dumont a3d4b3d7db hashtable_policy.h (_Hashtable_alloc): New.
2013-08-06  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Hashtable_alloc): New.
	(_ReuseOrAllocNode, _AllocNode): Adapt to use latter rather than
	_Hashtable.
	(_Before_begin<>): Remove.
	* include/bits/hashtable.h (_Hashtable): Inherit from
	_Hashtable_alloc and adapt. Restore _M_before_begin field.
	* python/libstdcxx/v6/printers.py (StdHashtableIterator): Adapt
	access to hashtable before begin.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Adapt dg-error line number.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Likewise.

From-SVN: r201522
2013-08-06 08:38:58 +00:00
Tim Shen 399eeef978 Implement bracket expression.
2013-08-03  Tim Shen  <timshen91@gmail.com>

	Implement bracket expression.
	* include/bits/regex.h: Remove constexpr from "|=", etc.
	* include/bits/regex_compiler.h: Parse bracket expression.
	* include/bits/regex_nfa.h: _Comparator and _BracketMatcher(old
	_RangeMatcher).
	* include/bits/regex_nfa.tcc: Implement them.
	* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
	from regex_search to regex_match.
	* testsuite/28_regex/algorithms/regex_match/extended/
	cstring_bracket_01.cc: New.

From-SVN: r201465
2013-08-03 14:32:54 +00:00
Tim Shen 95c7d82816 Thompson matcher refactored.
2013-07-31  Tim Shen  <timshen91@gmail.com>

	Thompson matcher refactored. Fix grouping problem.
	* include/bits/regex.h: Use a dispatcher _M_get_matcher().
	* include/bits/regex_compiler.h: Tweak for auto switching.
	* include/bits/regex_grep_matcher.h: Class structure.
	* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
	matcher) refactoring.
	* include/bits/regex_nfa.h: Change _Results's interfaces.
	* include/std/regex: Includes <map> and <queue>.
	* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_dispatch_01.cc: New.

From-SVN: r201391
2013-07-31 22:36:11 +00:00
Paolo Carlini 4333e4dcf7 re PR libstdc++/56627 (class hash instead of struct hash)
2013-07-31  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56627
	* include/bits/stl_bvector.h: Use friend struct hash intead of
	friend class hash to work around useless warnings produced by
	some compilers.
	* include/std/bitset: Likewise.

From-SVN: r201377
2013-07-31 14:36:13 +00:00
Tim Shen 1151053225 Revert last commit.
From-SVN: r201360
2013-07-31 03:36:37 +00:00
Tim Shen abf1719efe Thompson matcher refactored.
2013-07-31  Tim Shen  <timshen91@gmail.com>

	Thompson matcher refactored. Fix grouping problem.
	* include/bits/regex.h: Use a dispatcher _M_get_matcher().
	* include/bits/regex_compiler.h: Tweak for auto switching.
	* include/bits/regex_grep_matcher.h: Class structure.
	* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
	matcher) refactoring.
	* include/bits/regex_nfa.h: Change _Results's interfaces.
	* include/std/regex: Includes <map> and <queue>.
	* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/
	string_dispatch_01.cc: New.

From-SVN: r201358
2013-07-31 00:20:06 +00:00
Paolo Carlini 5034aa2102 2013-07-30 Paolo Carlini <paolo.carlini@oracle.com>
Revert last commit.

From-SVN: r201348
2013-07-30 18:13:15 +00:00
Tim Shen a6dc77bc3d Thompson matcher refactored.
2013-07-30  Tim Shen  <timshen91@gmail.com>

	Thompson matcher refactored. Fix grouping problem.
	* include/bits/regex.h: Use a dispatcher _M_get_matcher().
	* include/bits/regex_compiler.h: Tweak for auto switching.
	* include/bits/regex_grep_matcher.h: Class structure.
	* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
	matcher) refactoring.
	* include/bits/regex_nfa.h: Change _Results's interfaces.
	* include/std/regex: Includes <map> and <queue>.
	* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
	For both matchers.
	* testsuite/28_regex/algorithms/regex_match/extended/string_dispatch_01.cc:
	New.

From-SVN: r201334
2013-07-30 12:02:55 +00:00
Tim Shen 105164bb90 Add documents and comments.
2013-07-25  Tim Shen  <timshen91@gmail.com>

	Add documents and comments.
	* include/bits/regex.h: Documents and comments.
	* include/bits/regex_grep_matcher.h: Likewise.
	* include/bits/regex_grep_matcher.tcc: Likewise.
	* testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc:
	New.

From-SVN: r201244
2013-07-25 14:59:43 +00:00
Paolo Carlini 821f6f1b31 random.h (random_device): Avoid using the FILE type.
2013-07-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/random.h (random_device): Avoid using the FILE type.
	* include/std/random: Do not include <cstdio>.
	* src/c++11/random.cc: ... include it here.
	(random_device::_M_init, random_device::_M_fini,
	random_device::_M_getval): Cast back and forth void* and FILE*.

From-SVN: r201215
2013-07-24 15:42:06 +00:00
Tim Shen 37c74e2816 Reimplment matcher using Depth-first search(backtracking).
2013-07-24  Tim Shen  <timshen91@gmail.com>

	Reimplment matcher using Depth-first search(backtracking).
	PR libstdc++/53622
	PR libstdc++/57173
	* include/bits/regex.h: regex_match() and regex_search().
	* include/bits/regex_cursor.h: Fix _M_set_pos().
	* include/bits/regex_grep_matcher.h: add _M_dfs_match().
	* include/bits/regex_grep_matcher.tcc: Implement it.
	* testsuite/28_regex/algorithms/regex_match/extended/string_group_01.cc:
	New.
	* testsuite/28_regex/algorithms/regex_match/extended/string_group_02.cc:
	New.
	* testsuite/28_regex/algorithms/regex_search/basic/string_01.cc:
	Remove xfail.

From-SVN: r201213
2013-07-24 14:39:54 +00:00
Tim Shen 407a0fa3a4 Implement regex_iterator and regex_token_iterator.
2013-07-23  Tim Shen  <timshen91@gmail.com>

	Implement regex_iterator and regex_token_iterator.
	* include/bits/regex.h: regex_iterator and regex_token_iterator.
	* testsuite/28_regex/iterators/regex_iterator/char/string_01.cc:
	New.
	* testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc:
	New.
	* testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc:
	New.
	* testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc:
	New.

From-SVN: r201169
2013-07-23 12:31:51 +00:00
Tim Shen 603c431f90 Partially implement regex_search.
2013-07-21  Tim Shen  <timshen91@gmail.com>

	Partially implement regex_search.
	* include/bits/regex.h: regex_search.
	* include/bits/regex_grep_matcher.h: _M_search_from_first.
	* include/bits/regex_grep_matcher.tcc: Implement it.
	* testsuite/28_regex/algorithms/regex_search/basic/string_01.cc: New.

From-SVN: r201113
2013-07-21 23:34:02 +00:00
Tim Shen b3ebe3d0e0 Implement class regex_traits.
2013-07-09  Tim Shen  <timshen91@gmail.com>

	Implement class regex_traits.
	* include/bits/regex.h: Implement lookup_classname and
	lookup_collatename; modify isctype; partially implement
	transform_primary.
	* testsuite/28_regex/traits/char/isctype.cc: Add more test cases.
	* testsuite/28_regex/traits/char/lookup_classname.cc: Likewise.
	* testsuite/28_regex/traits/char/lookup_collatename.cc: Likewise.
	* testsuite/28_regex/traits/char/transform_primary.cc: Likewise.
	* testsuite/28_regex/traits/wchar_t/isctype.cc: New.
	* testsuite/28_regex/traits/wchar_t/lookup_classname.cc: New.
	* testsuite/28_regex/traits/wchar_t/lookup_collatename.cc: New.
	* testsuite/28_regex/traits/wchar_t/transform_primary.cc: New.

From-SVN: r200818
2013-07-09 13:41:10 +00:00
François Dumont b3abc9d822 hashtable_policy.h (_ReuseOrAllocNode): Use forward pattern.
2013-07-05  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_ReuseOrAllocNode): Use forward
	pattern.
	(_MoveReuseOrAllocNode): Remove.
	(_Insert_base): Take a functor defining how the node is generated.
	* include/bits/hashtable.h: Adapt.
	(operator=(initializer_list<value_type>)): Reuse node if any.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Likewise.

From-SVN: r200724
2013-07-05 21:21:07 +00:00
Veres Lajos 1d77bc548a codecvt_members.cc: Fix typo.
2013-07-04  Veres Lajos  <vlajos@gmail.com>
	    Jonathan Wakely  <jwakely.gcc@gmail.com>

	* config/locale/generic/codecvt_members.cc: Fix typo.
	* configure.host: Likewise.
	* doc/html/manual/policy_data_structures_design.html: Likewise.
	* doc/xml/manual/policy_data_structures.xml: Likewise.
	* include/bits/hashtable.h: Likewise.
	* include/bits/random.h: Likewise.
	* include/profile/impl/profiler_trace.h: Likewise.
	* testsuite/23_containers/deque/cons/2.cc: Likewise.
	* testsuite/23_containers/deque/debug/shrink_to_fit.cc: Likewise.
	* testsuite/ext/pb_ds/example/basic_multimap.cc: Likewise.
	* testsuite/performance/23_containers/insert_erase/41975.cc: Likewise.

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

From-SVN: r200681
2013-07-04 22:07:44 +01:00
Ray Chason b727d9c4be re PR libstdc++/57808 (operators == and != for regex_token_iterator need to be const)
2013-07-04  Ray Chason  <chasonr@newsguy.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57808
	* include/bits/regex.h (regex_token_iterator<>::operator==,
	regex_token_iterator<>::operator!=, regex_token_iterator<>::operator*,
	regex_token_iterator<>::operator->): Declare const.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r200662
2013-07-04 08:23:44 +00:00
Paolo Carlini 019fdb7923 stl_list.h (list<>::insert(iterator, size_type, const value_type&), [...]): Adjust C++11 signatures to take const_iterator(s).
2013-07-01  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_list.h (list<>::insert(iterator,
	size_type, const value_type&), list<>::insert(iterator,
	initializer_list<>), list<>::insert(iterator, _InputIterator,
	_InputIterator), list<>::splice(iterator, list&&),
	list<>::splice(iterator, list&), list<>::splice(iterator, list&&,
	iterator), list<>::splice(iterator, list&, iterator),
	list<>::splice(iterator, list&&, iterator, iterator),
	list<>::splice(iterator, list&, iterator, iterator)): Adjust C++11
	signatures to take const_iterator(s).
	* include/bits/list.tcc (list<>::insert(const_iterator, size_type,
	const value_type&), list<>::insert(const_iterator, _InputIterator,
	_InputIterator)): Define.
	* include/ext/vstring.h (__versa_string<>::insert(iterator,
	size_type, _CharT), __versa_string<>::insert(iterator,
	_InputIterator, _InputIterator), __versa_string<>::insert(iterator,
	std::initializer_list<>), __versa_string<>::replace(iterator,
	iterator, _InputIterator, _InputIterator), __versa_string<>::
	replace(iterator, iterator, std::initializer_list<>)): Adjust C++11
	signatures to take const_iterator(s).
	(__versa_string<>::_M_replace_dispatch): Take const_iterators.
	* include/ext/vstring.tcc: Likewise.
	* include/debug/list: Adjust.
	* include/profile/list: Likewise.
	* testsuite/23_containers/list/operations/splice/const_iterator.cc:
	New.
	* testsuite/23_containers/list/modifiers/insert/const_iterator.cc:
	Extend.
	* testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc:
	Likewise.

	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_1_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/
	constructor_2_neg.cc: Likewise.
	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r200580
2013-07-01 16:17:46 +00:00
Paolo Carlini 06eed9f588 stl_deque.h (deque<>::insert(iterator, size_type, const value_type&), [...]): Adjust C++11 signatures to take a const_iterator.
2013-06-30  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_deque.h (deque<>::insert(iterator,
	size_type, const value_type&), deque<>::insert(iterator,
	initializer_list<>), deque<>::insert(iterator, _InputIterator,
	_InputIterator)): Adjust C++11 signatures to take a const_iterator.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/stl_bvector.h: Likewise.
	* include/debug/deque: Adjust.
	* include/debug/vector: Likewise.
	* include/profile/deque: Likewise.
	* include/profile/vector: Likewise.
	* testsuite/23_containers/deque/modifiers/insert/const_iterator.cc:
	Extend.
	* testsuite/23_containers/vector/bool/modifiers/insert/
	const_iterator.cc: Likewise.
	* testsuite/23_containers/vector/modifiers/insert/const_iterator.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/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: r200571
2013-06-30 16:24:30 +00:00
François Dumont 41349aec29 hashtable_policy.h (_Insert_base): Consider hint in insert methods.
2013-06-29  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Insert_base): Consider hint in
	insert methods.
	* include/bits/hashtable.h: Likewise.
	* testsuite/23_containers/unordered_multimap/insert/hint.cc: New.
	* testsuite/performance/23_containers/insert/unordered_multiset_hint.cc:
	New.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Likewise.
	* doc/xml/manual/containers.xml: Document hinting in unordered
	containers.

From-SVN: r200564
2013-06-29 07:55:12 +00:00
Paolo Carlini 7b61c5a9cb stl_deque.h (deque<>::insert(iterator, const value_type&), [...]): Adjust C++11 signatures to take a const_iterator.
2013-06-27  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_deque.h (deque<>::insert(iterator,
	const value_type&), deque<>::insert(iterator, value_type&&),
	deque<>::emplace(iterator, _Args&&...)): Adjust C++11 signatures to
	take a const_iterator.
	(deque<>::erase): Simplify.
	* include/bits/stl_list.h: Likewise.
	(_List_iterator<>::_M_const_cast): Add.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/stl_bvector.h: Likewise.
	(_Bit_iterator::_M_const_cast): Add.
	* include/bits/deque.tcc: Adjust definitions.
	* include/bits/list.tcc: Likewise.
	* include/bits/vector.tcc: Likewise.
	* include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast):
	Define trivial version in C++98 mode.
	* include/ext/vstring.h (__versa_string<>::insert(iterator, _CharT),
	__versa_string<>::replace(iterator, iterator, const __versa_string&),
	__versa_string<>::replace(iterator, iterator, const _CharT*,
	size_type), __versa_string<>::replace(iterator, iterator,
	const _CharT*), __versa_string<>::replace(iterator, iterator,
	size_type, _CharT)): Adjust C++11 signatures to take a pair of
	const_iterators.
	* include/debug/deque: Adjust.
	* include/debug/list: Likewise.
	* include/debug/vector: Likewise.
	* include/profile/deque: Likewise.
	* include/profile/list: Likewise.
	* include/profile/vector: Likewise.
	(vector<>::emplace): Add.
	* testsuite/util/exception/safety.h: Update.
	* testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc:
	New.
	* testsuite/23_containers/deque/modifiers/insert/const_iterator.cc:
	Likewise.
	* testsuite/23_containers/list/modifiers/emplace/const_iterator.cc:
	Likewise.
	* testsuite/23_containers/list/modifiers/insert/const_iterator.cc:
	Likewise.
	* testsuite/23_containers/vector/bool/modifiers/insert/
	const_iterator.cc: Likewise.
	* testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc:
	Likewise.
	* testsuite/23_containers/vector/modifiers/insert/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc:
	Likewise.
	* testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc:
	Likewise.

	* testsuite/ext/vstring/modifiers/char/54577.cc: Move to testsuite/
	ext/vstring/modifiers/erase/char/.
	* testsuite/ext/vstring/modifiers/wchar_t/54577.cc: Move to testsuite/
	ext/vstring/modifiers/wchar_t/.
	* testsuite/ext/vstring/modifiers/char/pop_back.cc: Move to testsuite/
	ext/vstring/modifiers/pop_back/char/.
	* testsuite/ext/vstring/modifiers/wchar_t/pop_back.cc: Move to
	testsuite/ext/vstring/modifiers/pop_back/wchar_t/.

	* 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/
	constructor_2_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: r200458
2013-06-27 09:51:21 +00:00
Paolo Carlini 6cdbb7e8a1 re PR libstdc++/57704 (std::char_traits<char>::lt is not standards-compliant)
2013-06-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57704
	* include/bits/char_traits.h (char_traits<char>::lt): Implement
	LWG 467.
	* testsuite/21_strings/char_traits/requirements/char/57704.cc: New.

From-SVN: r200392
2013-06-25 08:39:31 +00:00
Paolo Carlini 07bba3b144 re PR libstdc++/57674 (wrong distribution for std::binomial_distribution::operator()(g,param))
2013-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57674
	* include/bits/random.h (binomial_distribution<>::_M_waiting):
	Add double parameter.
	* include/bits/random.tcc (binomial_distribution<>::operator()
	(_UniformRandomNumberGenerator&, const param_type&)): Pass
	__param._M_q to _M_waiting.
	(_M_waiting): Adjust.
	* testsuite/26_numerics/random/binomial_distribution/
	operators/values.cc: Add tests.

From-SVN: r200341
2013-06-22 21:07:02 +00:00
Jonathan Wakely 31eb8a1809 stl_algobase.h (equal): Make C++14 overloads from N3671 dispatch to traditional std::equal for...
2013-06-17  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Chris Jefferson  <chris@bubblescope.net>

	* include/bits/stl_algobase.h (equal): Make C++14 overloads from N3671
	dispatch to traditional std::equal for random-access iterators.
	(__equal2_aux, __equal2): Remove.
	(__equal::equal): Remove unused overloads.
	* include/bits/stl_algo.h (is_permutation): Fix typos.

Co-Authored-By: Chris Jefferson <chris@bubblescope.net>

From-SVN: r200145
2013-06-17 01:47:55 +01:00
Jonathan Wakely f038f5824b re PR libstdc++/57263 (std::set with user-defined allocator - compile error)
PR libstdc++/57263
	* include/bits/forward_list.h (_Fwd_list_base): Convert to/from
	allocator's pointer type.
	* include/bits/hashtable.h (_Hashtable): Likewise.
	* testsuite/util/testsuite_allocator.h (CustomPointerAlloc): Add.
	* testsuite/23_containers/forward_list/allocator/ext_ptr.cc: New.
	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: New.
	* testsuite/23_containers/vector/allocator/ext_ptr.cc: New.

From-SVN: r200136
2013-06-16 18:13:34 +01:00
Jonathan Wakely 8d2cddc125 shared_mutex: Implement N3659.
* include/std/shared_mutex: Implement N3659.
	* include/bits/c++14_warning.h: New.
	* include/Makefile.am: Add new headers.
	* include/Makefile.in: Regenerate.
	* testsuite/30_threads/shared_lock/cons/1.cc: New.
	* testsuite/30_threads/shared_lock/locking/2.cc: New.
	* testsuite/30_threads/shared_lock/cons/2.cc: New.
	* testsuite/30_threads/shared_lock/locking/3.cc: New.
	* testsuite/30_threads/shared_lock/cons/3.cc: New.
	* testsuite/30_threads/shared_lock/locking/4.cc: New.
	* testsuite/30_threads/shared_lock/cons/4.cc: New.
	* testsuite/30_threads/shared_lock/modifiers/1.cc: New.
	* testsuite/30_threads/shared_lock/cons/5.cc: New.
	* testsuite/30_threads/shared_lock/modifiers/2.cc: New.
	* testsuite/30_threads/shared_lock/cons/6.cc: New.
	* testsuite/30_threads/shared_lock/requirements/
	explicit_instantiation.cc: New.
	* testsuite/30_threads/shared_lock/locking/1.cc: New.
	* testsuite/30_threads/shared_lock/requirements/typedefs.cc: New.
	* 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: r200134
2013-06-16 17:35:06 +01:00
Paolo Carlini 95777cb0fb re PR libstdc++/57619 (std::unordered_map and std::unordered_multimap::insert invoking std::pair move constructor)
2013-06-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57619
	* include/bits/unordered_map.h (unordered_map<>::insert,
	unordered_multimap<>::insert): Use std::forward, not std::move.
	* testsuite/23_containers/unordered_map/insert/57619.C: New.
	* testsuite/23_containers/unordered_multimap/insert/57619.C: Likewise.

From-SVN: r200111
2013-06-14 23:35:56 +00:00
Ed Smith-Rowland 0372af98bd Fix library literals error involving namespace __detail.
2013-06-11  Ed Smith-Rowland  <3dw4rd@verizon.net>

	Fix library literals error involving namespace __detail.
	* include/std/chrono: Rename __detail to __select_type. Reformat.
	* include/bits/basic_string.h: Reformat.
	* testsuite/20_util/duration/literals/ns_detail.cc: New.

From-SVN: r199948
2013-06-11 11:00:38 +00:00
Benjamin Kosnik 3b31a72738 c++config (_GLIBCXX_ABI_TAG_CXX11): Add.
2013-06-10  Benjamin Kosnik  <bkoz@redhat.com>

	* include/bits/c++config (_GLIBCXX_ABI_TAG_CXX11): Add.
	* include/bits/stl_map.h (erase): Use abi_tag when C++11.
	* include/bits/stl_multimap.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/stl_set.h: Same.
	* include/bits/stl_tree.h: Same.
	* include/std/complex (real, imag): Use macro for abi_tag.

	* testsuite/lib/libstdc++.exp: Disable inlinling with -fno-inline.
	* testsuite/util/testsuite_containers.h (erase_external): New
	declarations.
	(erase_external_iterators): Same.
	(linkage_check_cxx98_cxx11_erase): Same.
	(linkage_check_cxx98_cxx11_erase_iterators): Same.
	* testsuite/util/testsuite_shared.cc: Define.
	* testsuite/23_containers/map/modifiers/erase/abi_tag.cc: New.
	* testsuite/23_containers/map/modifiers/erase/
	dr130-linkage-check.cc: New.
	* testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc: New.
	* testsuite/23_containers/multimap/modifiers/erase/
	dr130-linkage-check.cc: New.
	* testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc: New.
	* testsuite/23_containers/multiset/modifiers/erase/
	dr130-linkage-check.cc: New.
	* testsuite/23_containers/set/modifiers/erase/abi_tag.cc: New.
	* testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc:
	New.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line number.

	* testsuite/23_containers/map/dr130.cc: Move...
	* testsuite/23_containers/map/modifiers/dr130.cc: ...here.
	* testsuite/23_containers/multimap/dr130.cc: Move ...
	* testsuite/23_containers/multimap/modifiers/dr130.cc: ...here.
	* testsuite/23_containers/multiset/dr130.cc: Move...
	* testsuite/23_containers/multiset/modifiers/dr130.cc: ...here.
	* testsuite/23_containers/set/dr130.cc: Move...
	* testsuite/23_containers/set/modifiers/dr130.cc: ...here.

From-SVN: r199924
2013-06-10 23:11:05 +00:00
Ed Smith-Rowland 88c4d6b798 Simplify and clean up library literals.
2013-06-07  Ed Smith-Rowland  <3dw4rd@verizon.net>

	Simplify and clean up library literals.
	* include/std/chrono: Simplify namespace and versioning management.
	* include/bits/basic_string.h: Ditto.
	* testsuite/20_util/duration/literals/types.cc: Remove bogus comment.
	* testsuite/20_util/duration/literals/values.cc: Ditto.
	* testsuite/21_strings/basic_string/literals/types.cc: Ditto.
	* testsuite/21_strings/basic_string/literals/values.cc: Ditto.

From-SVN: r199861
2013-06-08 22:43:18 +00:00
Jonathan Wakely 7b91690215 alloc_traits.h (allocator_traits::max_size()): LWG 2162: Add noexcept.
* include/bits/alloc_traits.h (allocator_traits::max_size()): LWG
	2162: Add noexcept.

From-SVN: r199858
2013-06-08 18:31:40 +01:00
Jonathan Wakely f7fbb0036a stl_algo.h (is_permutation): Add overloads from N3671.
* include/bits/stl_algo.h (is_permutation): Add overloads from N3671.
	* include/bits/stl_algobase.h (equal, mismatch): Likewise.
	* testsuite/25_algorithms/equal/1.cc: Remove duplicate test case.
	* testsuite/25_algorithms/equal/2.cc: New.
	* testsuite/25_algorithms/equal/check_type2.cc: New.
	* testsuite/25_algorithms/is_permutationqual/2.cc: New.
	* testsuite/25_algorithms/is_permutationqual/check_type2.cc: New.
	* testsuite/25_algorithms/mismatch/2.cc: New.
	* testsuite/25_algorithms/mismatch/check_type2.cc: New.
	* testsuite/util/testsuite_iterators.h: Fix spelling.

From-SVN: r199854
2013-06-08 17:12:13 +01:00
Ed Smith-Rowland fa40983341 include/std/chrono: Collapse redundant 'inline' from 'inline constexpr'.
2013-06-01  Ed Smith-Rowland  <3dw4rd@verizon.net>

	include/std/chrono: Collapse redundant 'inline' from 'inline constexpr'.
	include/std/tuple: Ditto.
	include/bits/move.h: Ditto.

From-SVN: r199587
2013-06-01 21:39:50 +00:00
Ed Smith-Rowland 1c9f675fd9 Implement N3642 - User-defined Literals for Standard Library Types
2013-05-30  Ed Smith-Rowland  <3dw4rd@verizon.net>

	Implement N3642 - User-defined Literals for Standard Library Types
	* include/bits/parse_numbers.h: New.
	* include/std/chrono: Add duration literal operators.
	* include/bits/basic_string.h: Add string literal operators.
	* include/Makefile.in: Add parse_numbers.h.
	* include/Makefile.am: Ditto.
	* testsuite/20_util/duration/literals/values.cc: New.
	* testsuite/20_util/duration/literals/types.cc: New.
	* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust.
	* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Adjust.
	* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Adjust.
	* testsuite/21_strings/basic_string/literals/values.cc: New.
	* testsuite/21_strings/basic_string/literals/types.cc: New.

From-SVN: r199584
2013-06-01 18:37:47 +00:00
Paolo Carlini 9797bec939 type_traits.h (__is_null_pointer): Add std::nullptr_t overload.
2013-05-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/ext/type_traits.h (__is_null_pointer): Add std::nullptr_t
	overload.

	* include/bits/cpp_type_traits.h (__is_fundamental): Remove, unused.

From-SVN: r199313
2013-05-24 18:27:59 +00:00
Jonathan Wakely 05a4261b10 unique_ptr.h (make_unique): Declare inline.
* include/bits/unique_ptr.h (make_unique): Declare inline.
	(unique_ptr<T[],D>::reset()): Combine two overloads into one.
	(default_delete, unique_ptr): Add doxygen comments.
	* include/bits/shared_ptr_base.h: Improve doxygen comments.
	* include/bits/shared_ptr.h: Likewise.
	* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line
	number.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise.

From-SVN: r199069
2013-05-18 21:18:55 +01:00
Jonathan Wakely a9769eb0d9 unique_ptr.h (make_unique): Define.
* include/bits/unique_ptr.h (make_unique): Define.
	* testsuite/20_util/unique_ptr/creation/single.cc: New.
	* testsuite/20_util/unique_ptr/creation/array.cc: New.
	* testsuite/20_util/unique_ptr/creation/array_neg.cc: New.

From-SVN: r199057
2013-05-18 16:07:02 +01:00
Jonathan Wakely 3b2453a973 * include/bits/basic_string.h (getline): Fix doxygen comments.
From-SVN: r198920
2013-05-15 09:22:25 +01:00
Paolo Carlini a5244b2ed5 stl_iterator.h (__normal_iterator<>::_M_const_cast): Use std::pointer_traits.
2013-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast):
	Use std::pointer_traits.

From-SVN: r198891
2013-05-14 15:17:18 +00:00
Paolo Carlini 94938aec1a re PR libstdc++/54577 (deque<T>::erase() still takes iterator instead of const_iterator)
2013-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/54577
	* include/bits/stl_deque.h (erase): Fix signatures in C++11 mode.
	(_Deque_iterator<>::_M_const_cast): Add.
	(deque<>::_M_erase): Declare.
	* include/bits/deque.tcc: ... and define.
	* include/bits/stl_list.h (erase): Fix signatures in C++11 mode.
	(_List_const_iterator<>::_M_const_cast): Add.
	* include/bits/list.tcc (erase (iterator)): Fix.
	* include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast):
	Add; include <ext/cast.h>.
	* include/bits/stl_vector.h (erase): Fix signatures in C++11 mode.
	(vector<>::_M_erase): Declare.
	* include/bits/stl_bvector.h: Likewise.
	* include/bits/vector.tcc (vector<>::_M_erase): Define.
	* include/ext/vstring.h (erase): Fix signatures in C++11 mode.
	* include/debug/deque: Adjust.
	* include/debug/list: Likewise.
	* include/debug/vector: Likewise.
	* include/profile/deque: Likewise.
	* include/profile/list: Likewise.
	* include/profile/vector: Likewise.
	* testsuite/util/exception/safety.h (erase_base<deque>,
	erase_base<deque>, erase_base<vector>): Remove.
	(erase_base<__versa_string>): Update.
	* testsuite/ext/vstring/modifiers/char/54577.cc: New.
	* testsuite/ext/vstring/modifiers/wchar_t/54577.cc: Likewise.
	* testsuite/23_containers/deque/modifiers/erase/54577.cc: Likewise.
	* testsuite/23_containers/list/modifiers/erase/54577.cc: Likewise.
	* testsuite/23_containers/vector/bool/modifiers/erase/54577.cc:
	Likewise.
	* testsuite/23_containers/vector/modifiers/erase/54577.cc: Likewise.
	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
	Adjust dg-error line numbers.
	* 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/
	constructor_2_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: r198790
2013-05-10 15:18:33 +00:00
Andi Kleen a062bb4ba6 Mark all member functions with memory models always inline v2
When a non constant memory model is passed to __atomic_*
gcc falls back to seq_cst. This drops any HLE acquire or release bits.

This can happen when <atomic> is used with -O0
as the member functions are not always inlined then and the memory
argument passed in ends up being non-constant.

v2: Use _GLIBCXX_ALWAYS_INLINE

libstdc++-v3/:

2013-05-08  Andi Kleen  <ak@linux.intel.com>

	PR target/55947
	* libstdc++-v3/include/bits/atomic_base.h
	(_GLIBCXX_ALWAYS_INLINE): Add new macro.
	(atomic_thread_fence, atomic_signal_fence, test_and_set,
	clear, store, load, exchange, compare_exchange_weak)
	compare_exchange_strong, fetch_add, fetch_sub, fetch_and,
	fetch_or, fetch_xor): Mark _GLIBCXX_ALWAYS_INLINE.

From-SVN: r198733
2013-05-09 04:22:11 +00:00
Jonathan Wakely d872e4aa70 hashtable_policy.h (_Hashtable_ebo_helper): Fix comment.
* include/bits/hashtable_policy.h (_Hashtable_ebo_helper): Fix
	comment.
	* include/std/mutex (__recursive_mutex_base): Likewise.

From-SVN: r198368
2013-04-28 12:51:59 +01:00
Jonathan Wakely fe807059aa re PR libstdc++/51365 (cannot use final empty class in std::tuple)
PR libstdc++/51365
	* include/bits/shared_ptr_base (_Sp_ebo_helper): Helper class to
	implement EBO safely.
	(_Sp_counted_base::_M_get_deleter): Add noexcept.
	(_Sp_counter_ptr): Use noexcept instead of comments.
	(_Sp_counted_deleter): Likewise. Use _Sp_ebo_helper.
	(_Sp_counted_ptr_inplace): Likewise.
	* testsuite/20_util/shared_ptr/cons/51365.cc: New.
	* testsuite/20_util/shared_ptr/cons/52924.cc: Add rebind member to
	custom allocator and test construction with custom allocator.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error
	line number.

From-SVN: r198367
2013-04-28 12:38:21 +01:00
François Dumont d2f2f2e38c 2013-04-26 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable_policy.h
	(_Insert_base<>::insert<_It>(_It, _It)): Enable move semantics.
	* testsuite/23_containers/unordered_set/insert/move_range.cc: New.

From-SVN: r198346
2013-04-26 20:13:41 +00:00
Paolo Carlini 03d7aff6ee re PR libstdc++/57065 (incorrect default allocator template for debug and profile unordered_map)
2013-04-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57065
	* include/debug/unordered_map (unordered_map, unordered_multimap):
	Fix default allocator type.
	* include/profile/unordered_map (unordered_map, unordered_multimap):
	Likewise.
	* include/bits/unordered_map.h: Fix comments.

From-SVN: r198279
2013-04-25 09:42:46 +00:00
François Dumont 0462b6aa20 hashtable_policy.h: Add C++11 allocator support.
2013-04-22  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h: Add C++11 allocator support.
	* include/bits/hashtable.h: Likewise.
	* include/bits/unordered_set.h: Likewise.
	* include/bits/unordered_map.h: Likewise.
	* include/debug/unordered_set: Likewise.
	* include/debug/unordered_map: Likewise.
	* include/std/unordered_set: Remove bits/algobase.h
	include. Replace bits/alloc_traits.h by ext/alloc_traits.h.
	* include/std/unordered_map: Likewise.
	* include/ext/throw_allocator.h: Add checks on calls to allocator
	construct/destroy.
	(std::hash<__gnu_cxx::throw_value_limit>): Add conditional throw.
	(std::hash<__gnu_cxx::throw_value_random>): Likewise.
	* testsuite/util/regression/rand/priority_queue
	/container_rand_regression_test.tcc: Adapt.
	* testsuite/util/regression/rand/assoc
	/container_rand_regression_test.tcc: Likewise.
	* testsuite/util/testsuite_counter_type.h: Add count of destructors.
	* testsuite/23_containers/unordered_set
	/not_default_constructible_hash_neg.cc: Adjust dg-error line number.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Likewise.
	* testsuite/23_containers/unordered_set/allocator/copy.cc: New.
	* testsuite/23_containers/unordered_set/allocator/copy_assign.cc: New.
	* testsuite/23_containers/unordered_set/allocator/minimal.cc: New.
	* testsuite/23_containers/unordered_set/allocator/move_assign.cc: New.
	* testsuite/23_containers/unordered_set/allocator/noexcept.cc: New.
	* testsuite/23_containers/unordered_set/allocator/swap.cc: New.
	* testsuite/23_containers/unordered_multiset/allocator/copy.cc: New.
	* testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc:
	New.
	* testsuite/23_containers/unordered_multiset/allocator/minimal.cc: New.
	* testsuite/23_containers/unordered_multiset/allocator/move_assign.cc:
	New.
	* testsuite/23_containers/unordered_multiset/allocator/noexcept.cc: New.
	* testsuite/23_containers/unordered_multiset/allocator/swap.cc: New.
	* testsuite/23_containers/unordered_map/allocator/copy.cc: New.
	* testsuite/23_containers/unordered_map/allocator/copy_assign.cc: New.
	* testsuite/23_containers/unordered_map/allocator/minimal.cc: New.
	* testsuite/23_containers/unordered_map/allocator/move_assign.cc: New.
	* testsuite/23_containers/unordered_map/allocator/noexcept.cc:
	New.
	* testsuite/23_containers/unordered_map/allocator/swap.cc: New.
	* testsuite/23_containers/unordered_multimap/allocator/copy.cc: New.
	* testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc:
	New.
	* testsuite/23_containers/unordered_multimap/allocator/minimal.cc: New.
	* testsuite/23_containers/unordered_multimap/allocator/move_assign.cc:
	New.
	* testsuite/23_containers/unordered_multimap/allocator/noexcept.cc: New.
	* testsuite/23_containers/unordered_multimap/allocator/swap.cc: New.

From-SVN: r198158
2013-04-22 20:22:07 +00:00
Paolo Carlini 177d2b74b5 re PR libstdc++/57010 ([c++0x] priority_queue<>::pop() calls self-move-assignment operator)
2013-04-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/57010
	* include/bits/stl_heap.h (pop_heap): Avoid self move-assignment.
	* testsuite/25_algorithms/pop_heap/57010.cc: New.

From-SVN: r198125
2013-04-22 10:07:31 +00:00
Jonathan Wakely f2e2de5f85 Makefile.am: Add ext/aligned_buffer.h
* include/Makefile.am: Add ext/aligned_buffer.h
	* include/Makefile.in: Regenerate.
	* include/ext/aligned_buffer.h: New.
	* include/std/future (_Result): Use __aligned_buffer.
	* include/bits/forward_list.h (_Fwd_list_node): Likewise.
	* include/bits/shared_ptr_base.h (_Sp_counted_ptr_inplace): Likewise.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error line
	number.

From-SVN: r197554
2013-04-07 17:44:40 +01:00
Jonathan Wakely 7db567cd08 forward_list.h: Only include required headers.
* include/bits/forward_list.h: Only include required headers.
	(forward_list::reference): Define directly, not using __alloc_traits.
	(forward_list::const_reference): Likewise.

From-SVN: r197552
2013-04-07 16:42:27 +01:00
Paolo Carlini ad6fdc1976 PR libstdc++/55977 (partial, std::vector and std::deque bits)
2013-03-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/55977 (partial, std::vector and std::deque bits)
	* include/bits/stl_vector.h (_M_range_initialize(_InputIterator,
	_InputIterator, std::input_iterator_tag)): Use emplace_back.
	* include/bits/deque.tcc (_M_range_initialize(_InputIterator,
	_InputIterator, std::input_iterator_tag)): Likewise.
	* testsuite/23_containers/vector/cons/55977.cc: New.
	* testsuite/23_containers/deque/cons/55977.cc: Likewise.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.
	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
	Likewise.

From-SVN: r196774
2013-03-18 10:15:56 +00:00
Paolo Carlini b4904956fa re PR libstdc++/55979 ([C++11] std::list range construction imposes unnecessary conversion constraints)
2013-03-17  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/55979
	* include/bits/stl_list.h (_M_initialize_dispatch(_InputIterator,
	_InputIterator, __false_type)): Use emplace_back.
	* testsuite/23_containers/list/cons/55979.cc: New.
	* testsuite/23_containers/list/modifiers/1.h: Adjust.
	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
	Adjust dg-error line number.

From-SVN: r196755
2013-03-17 18:27:52 +00:00
Jonathan Wakely 1f069142c7 re PR libstdc++/56613 (map::operator[](key_type&&) fails with custom allocator)
PR libstdc++/56613
	* include/bits/stl_tree.h (_Rb_tree::_M_create_node): Use
	allocator_traits instead of calling construct directly.
	* testsuite/23_containers/map/56613.cc: New.

From-SVN: r196666
2013-03-14 23:28:11 +00:00
Benjamin Kosnik cd1e666505 memoryfwd.h: New.
* include/bits/memoryfwd.h: New. Centralize forward declarations.
	* include/bits/algorithmfwd.h: Consistent comments.
	* include/bits/localefwd.h: Same.
	* include/ext/vstring_fwd.h: Same.
	* include/parallel/algorithmfwd.h: Same.
	* include/parallel/numericfwd.h: Same.
	* include/std/iosfwd: Same.

	* include/bits/alloc_traits.h: Include memoryfwd.h, remove allocator
	forward decl.
	* include/ext/alloc_traits.h: Remove allocator forward decl.
	* include/bits/stl_construct.h: Same.
	* include/bits/stringfwd.h: Include memoryfwd.h, remove allocator
	forward decl. Consistent comments.

	* doc/doxygen/user.cfg.in (TEMPLATE_RELATIONS): To NO.

	* include/Makefile.am (bits_headers): Add memoryfwd.h.
	* include/Makefile.in: Regenerate.
	* configure: Same.

e enter the commit message for your changes. Lines starting

From-SVN: r196559
2013-03-08 21:39:24 +00:00
François Dumont 68d047cb48 vector.tcc (vector<>operator=(const vector<>&): Reset pointers after deallocation when memory can be reused.
2013-03-08  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/vector.tcc (vector<>operator=(const vector<>&):
	Reset pointers after deallocation when memory can be reused.
	* testsuite/23_containers/vector/allocator/minimal.cc: Insert
	elements to really challenge C++11 allocator integration.
	* testsuite/23_containers/vector/allocator/copy.cc: Likewise.
	* testsuite/23_containers/vector/allocator/copy_assign.cc:
	Likewise.
	* testsuite/23_containers/vector/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/vector/allocator/swap.cc: Likewise and
	swap vector back before checks on memory/personality mapping are
	performed.
	* testsuite/23_containers/forward_list/allocator/minimal.cc:
	Insert element to really challenge C++11 allocator integration.
	* testsuite/23_containers/forward_list/allocator/copy.cc:
	Likewise.
	* testsuite/23_containers/forward_list/allocator/copy_assign.cc:
	Likewise.
	* testsuite/23_containers/forward_list/allocator/move_assign.cc:
	Likewise.
	* testsuite/23_containers/forward_list/allocator/swap.cc: Likewise
	and swap forward_list back before checks on memory/personality
	mapping are performed.

From-SVN: r196557
2013-03-08 20:08:20 +00:00
Jonathan Wakely a26f0501b4 re PR libstdc++/56012 ([C++11] Narrowing conversion in atomic_flag)
PR libstdc++/56012
	* include/bits/atomic_base.h (atomic_flag): Fix narrowing conversion.
	* testsuite/29_atomics/atomic/operators/56012.cc: New.

	PR libstdc++/56011
	* include/std/atomic (atomic<bool>::operator=(bool) volatile): Add
	missing overload.
	* testsuite/29_atomics/atomic/operators/56011.cc: New.

From-SVN: r196296
2013-02-26 23:46:21 +00:00
Jonathan Wakely 2f2b63daf1 faq.html: Fix spelling.
* doc/html/faq.html: Fix spelling.
	* doc/xml/faq.xml: Likewise.
	* include/bits/basic_ios.h: Likewise.
	* include/bits/regex.h: Likewise.
	* include/std/istream: Likewise.
	* include/std/streambuf: Likewise.

From-SVN: r196184
2013-02-20 22:41:51 +00:00
Benjamin Kosnik c0ffa2badb user.cfg.in: Set __cplusplus to 201103L.
2013-02-19  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/doxygen/user.cfg.in: Set __cplusplus to 201103L. Change to
	_GLIBCXX_INCLUDE_AS_CXX11. DIRECTORY_GRAPH, MARKDOWN_SUPPORT,
	AUTOLINK_SUPPORT to NO. Update to doxygen 1.8.3.1.
	* include/bits/stl_pair.h: Add to utilities group.
	* include/std/tuple: Same.
	* include/std/typeindex: Same.

	* include/bits/stringfwd.h: Fix markup.
	* include/std/limits: Same.
	* include/std/type_traits: Same.
	* include/tr1/memory: Same.
	* include/tr1/regex: Same.
	* scripts/run_doxygen: Comment.
	* testsuite/20_util/uses_allocator/cons_neg.cc: Fixup line numbers.

From-SVN: r196162
2013-02-20 01:52:36 +00:00
François Dumont d9a3647a22 hashtable_policy.h (_Hash_code_base): Restore default constructor protected.
2013-02-13  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Hash_code_base): Restore
	default constructor protected.
	* include/bits/hashtable.h: static assert that _Hash_code_base has
	a default constructor available through inheritance.

From-SVN: r196030
2013-02-13 21:09:34 +00:00
Paolo Carlini 60f3a59f29 random.tcc (__transform): Remove.
2013-02-12  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/bits/random.tcc (__transform): Remove.
	(__normalize): Add.
	(discrete_distribution<>::param_type::_M_initialize): Adjust.
	(piecewise_constant_distribution<>::param_type::_M_initialize):
	Likewise.
	(piecewise_linear_distribution<>::param_type::_M_initialize):
	Likewise.

From-SVN: r195970
2013-02-12 10:26:54 +00:00
Paolo Carlini 3b424b30be re PR libstdc++/56282 (std::basic_ios<char> broken with -std=c++11 (undefined reference))
2013-02-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56282
	Revert:
	2013-02-06  Edward Smith-Rowland  <3dw4rd@verizon.net>

	PR libstdc++/56193
	* include/bits/basic_ios.h: Replace operator void*() const
	with explicit operator bool() const in C++11 and greater.
	* testsuite/27_io/basic_ios/pr56193.cc: New file.

From-SVN: r195939
2013-02-11 10:30:43 +00:00
Jonathan Wakely dfed5434f3 re PR libstdc++/56267 (unordered containers require Assignable hash function)
PR libstdc++/56267
	* include/bits/hashtable.h (__cache_default): Check if hash function
	is copy assignable.
	* testsuite/23_containers/unordered_set/56267.cc: New.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
	dg-error line number.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Likewise.

From-SVN: r195936
2013-02-11 00:19:29 +00:00
Jonathan Wakely a9b68b8289 re PR libstdc++/56278 (unordered containers fail static assertion)
PR libstdc++/56278
	* include/bits/hashtable_policy.h (_Hash_code_base): Make default
	constructor public.
	* testsuite/23_containers/unordered_set/56278.cc: New.

From-SVN: r195935
2013-02-11 00:19:14 +00:00
Edward Smith-Rowland fcf0430bda PR56193 - Wrong test operator for basic_ios in C++11.
From-SVN: r195849
2013-02-07 14:27:45 +00:00
François Dumont 4df047dd34 functional_hash.h (std::__is_fast_hash<>): New.
2013-02-04  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/functional_hash.h (std::__is_fast_hash<>): New.
	* include/bits/basic_string.h: Specialize previous to mark
	std::hash for string types as slow.
	* include/bits/hashtable.h (__cache_default): Replace is_integral
	with __is_fast_hash.
	* src/c++11/hash_c++0x.cc: Add type_traits include.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Adapt dg-error line number.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: Likewise.

From-SVN: r195738
2013-02-04 21:14:07 +00:00
Manuel López-Ibáñez 9ea146e6da PR libstdc++/56202 (again)
2013-02-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56202 (again)
	* include/bits/random.tcc (binomial_distribution<>::
	_M_waiting(_UniformRandomNumberGenerator&, _IntType)): Fix thinko
	in previous commit.

	* include/bits/random.h: Fix comment typo.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r195732
2013-02-04 19:28:40 +00:00
Manuel López-Ibáñez 85018f40ae re PR libstdc++/56202 (SIGFPE (division by zero) in std::binomial_distribution)
2013-02-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56202
	* include/bits/random.tcc (binomial_distribution<>::
	_M_waiting(_UniformRandomNumberGenerator&, _IntType)): Avoid
	division by zero.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r195722
2013-02-04 17:10:59 +00:00
Richard Sandiford 405feeb871 Update copyright in libstdc++-v3.
From-SVN: r195701
2013-02-03 17:54:05 +00:00
François Dumont 6e14794657 2013-02-01 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable_policy.h
	(_Prime_rehash_policy::_M_next_bkt)
	(_Prime_rehash_policy::_M_need_rehash): Move definition...
	* src/c++11/hashtable_c++0x.cc: ... here.
	* src/shared/hashtable-aux.cc: Remove c++config.h include.
	* config/abi/gnu.ver (GLIBCXX_3.4.18): Export _Prime_rehash_policy
	symbols.

From-SVN: r195676
2013-02-01 20:44:41 +00:00
Jonathan Wakely 0addb273c5 re PR libstdc++/56112 (cannot create unordered_map from range of types convertible to value_type)
PR libstdc++/56112
	* include/bits/hashtable_policy.h (insert(_Pair&&)): Use _M_emplace
	to construct value_type explicitly before trying to extract the key.
	* testsuite/23_containers/unordered_map/cons/56112.cc: New.

From-SVN: r195520
2013-01-28 23:07:35 +00:00
François Dumont 5b3be7cf99 hashtable_policy.h (_Local_iterator_base): Use _Hashtable_ebo_helper to embed functors into the local_iterator when necessary.
2013-01-28  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Local_iterator_base): Use
	_Hashtable_ebo_helper to embed functors into the local_iterator
	when necessary. Pass information about functors involved in hash
	code by copy.
	* include/bits/hashtable.h (__cache_default): Do not cache for
	builtin integral types unless the hash functor is not noexcept
	qualified or is not default constructible. Adapt static assertions
	and local iterator instantiations.
	* include/debug/unordered_set
	(std::__debug::unordered_set<>::erase): Detect local iterators to
	invalidate using contained node rather than generating a dummy
	local_iterator instance.
	(std::__debug::unordered_multiset<>::erase): Likewise.
	* include/debug/unordered_map
	(std::__debug::unordered_map<>::erase): Likewise.
	(std::__debug::unordered_multimap<>::erase): Likewise.
	* testsuite/performance/23_containers/insert_erase/41975.cc: Test
	std::tr1 and std versions of unordered_set regardless of any
	macro. Add test on default cache behavior.
	* testsuite/performance/23_containers/insert/54075.cc: Likewise.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc:
	Adapt line number.
	* testsuite/23_containers/unordered_set/
	not_default_constructible_hash_neg.cc: New.
	* testsuite/23_containers/unordered_set/buckets/swap.cc: New.

From-SVN: r195517
2013-01-28 20:52:13 +00:00
Andi Kleen d76b6ea417 libstdc++: Add mem_order_hle_acquire/release to atomic.h v2
The underlying compiler supports additional __ATOMIC_HLE_ACQUIRE/RELEASE
memmodel flags for TSX, but this was not exposed to the C++ wrapper.
Handle it there.

These are additional flags, so some of assert checks need to mask
off the flags before checking the memory model type.

libstdc++-v3/:
2013-01-12  Andi Kleen  <ak@linux.intel.com>
	    Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR libstdc++/55223
	* include/bits/atomic_base.h (__memory_order_modifier): Add
	__memory_order_mask, __memory_order_modifier_mask,
	__memory_order_hle_acquire, __memory_order_hle_release.
	(operator|,operator&): Add.
	(__cmpexch_failure_order):  Rename to __cmpexch_failure_order2.
	(__cmpexch_failure_order): Add.
	(clear, store, load, compare_exchange_weak, compare_exchange_strong):
	Handle flags.
	* testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc:
	Add.

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

From-SVN: r195321
2013-01-20 19:03:22 +00:00
Jonathan Wakely b7202baf14 PR libstdc++/55043 (again)
PR libstdc++/55043 (again)
	* include/bits/alloc_traits.h (allocator_traits::construct): Disable
	unless construction would be well-formed.
	(__allow_copy_cons, __check_copy_constructible): Define.
	* include/bits/unordered_map.h (__check_copy_constructible): Use as
	base class so copy constructor will be deleted if appropriate.
	(is_copy_constructible): Remove specialization.
	* include/bits/unordered_set.h: Likewise.
	* include/debug/unordered_map.h: Undo previous commit. Default copy
	and move constructors.
	* include/debug/unordered_set.h: Likewise.
	* include/profile/unordered_map.h: Undo previous commit.
	* include/profile/unordered_set.h: Likewise.
	* testsuite/23_containers/unordered_map/55043.cc: Fix test.
	* testsuite/23_containers/unordered_multimap/55043.cc: Likewise.
	* testsuite/23_containers/unordered_multiset/55043.cc: Likewise.
	* testsuite/23_containers/unordered_set/55043.cc: Likewise.
	* testsuite/23_containers/unordered_map/requirements/53339.cc: XFAIL,
	cannot support incomplete types.
	* testsuite/23_containers/unordered_multimap/requirements/53339.cc:
	Likewise.

From-SVN: r195253
2013-01-16 23:56:00 +00:00
Jonathan Wakely 8175e9866c re PR libstdc++/55043 (issue with nesting unordered_map containing unique_ptr into vector)
PR libstdc++/55043
	* include/std/unordered_map: Include alloc_traits.h
	* include/std/unordered_set: Likewise.
	* include/bits/alloc_traits.h: Define __is_copy_insertable.
	* include/bits/unordered_map.h: Use it.
	* include/bits/unordered_set.h: Likewise.
	* include/debug/unordered_map.h: Likewise.
	* include/debug/unordered_set.h: Likewise.
	* include/profile/unordered_map.h: Likewise.
	* include/profile/unordered_set.h: Likewise.
	* include/bits/hashtable.h: Fix comment typos.
	* testsuite/23_containers/unordered_map/55043.cc: New.
	* testsuite/23_containers/unordered_multimap/55043.cc: New.
	* testsuite/23_containers/unordered_multiset/55043.cc: New.
	* testsuite/23_containers/unordered_set/55043.cc: New.

From-SVN: r195231
2013-01-16 09:20:34 +00:00
Jonathan Wakely 1c2620dd6a unordered_map.h: Fix typo in comments.
* include/bits/unordered_map.h: Fix typo in comments.
	* doc/xml/manual/status_cxx2011.xml: Add implementation-defined bucket
	counts for unordered associative containers.

From-SVN: r194954
2013-01-06 21:58:18 +00:00
Jakub Jelinek 90d04a445c Update Copyright years for files modified in 2011 and/or 2012.
From-SVN: r194903
2013-01-04 13:49:55 +01:00
Jonathan Wakely 23df853421 functional (_Require): Move to ...
* include/std/functional (_Require): Move to ...
	* include/std/type_traits (_Require): ... here.
	* include/bits/shared_ptr_base.h (__shared_count::_S_create_from_up):
	Handle unique_ptr for arrays or with custom pointer types.
	(__shared_ptr::__shared_ptr(unique_ptr<_Tp1, _Del>&&): Likewise.
	* include/bits/unique_ptr.h (unique_ptr<_Tp[], _Dp>): Use
	_Dp::pointer if defined. Implement proposed resolution of LWG 2118.
	* testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc: New.
	* testsuite/20_util/unique_ptr/assign/cv_qual.cc: New.
	* testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc: New.
	* testsuite/20_util/unique_ptr/cons/convertible_neg.cc: New.
	* testsuite/20_util/unique_ptr/cons/cv_qual.cc: New.
	* testsuite/20_util/unique_ptr/modifiers/cv_qual.cc: New.
	* testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc: New.
	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Adjust comments.
	* testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/requirements/pointer_type.cc: Likewise.
	* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error line number.
	* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
	* testsuite/20_util/default_delete/48631_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Adjust
	dg-error text.
	* testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Use
	different instantiations so static_assert fails for each.

From-SVN: r194651
2012-12-20 21:02:33 +00:00
Ollie Wild 29f696491c Fix incorrect @headername Doxygen macro invocation.
Format is @headername{hdr1,hdr2} not @headername{hdr1 or hdr2}.

2012-11-27  Ollie Wild  <aaw@google.com>

	* include/bits/stl_tree.h (@headername): Fix incorrect Doxygen macro
	invocation.

From-SVN: r193869
2012-11-27 20:52:02 +00:00
Paolo Carlini 25caa91e99 re PR libstdc++/55413 ([LTO] hashtable.h:1648 '__bbegin_bkt' may be used uninitialized in this function [-Werror=maybe-uninitialized])
2012-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/55413
	* include/bits/hashtable.h (_Hashtable<>::_M_rehash_aux): Initialize
	__bbegin_bkt and __prev_bkt to avoid uninitialized warnings.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
	dg-error line number.

From-SVN: r193663
2012-11-20 14:54:11 +00:00
Matthias Klose 3263c9a3a7 2012-11-20 Matthias Klose <doko@ubuntu.com>
* doc/doxygen/user.cfg.in (ALIASES). Escape sharp braces.
        * include/bits/allocator.h: Escape sharp braces in comment.
        * include/profile/impl/profiler_algos.h: Likewise.

From-SVN: r193662
2012-11-20 13:48:28 +00:00
Jonathan Wakely 1b5dc776ca stl_algo.h (reverse_copy): Update comment per DR 2074.
* include/bits/stl_algo.h (reverse_copy): Update comment per DR 2074.
	* include/bits/unordered_map.h: Apply DR 2005 resolution.
	* doc/xml/manual/status_cxx2011.xml: Update per DR 2048.
	* include/bits/allocator.h (allocator): Apply DR 2103 resolution.
	* include/ext/array_allocator.h: Likewise.
	* include/ext/bitmap_allocator.h: Likewise.
	* include/ext/malloc_allocator.h: Likewise.
	* include/ext/mt_allocator.h: Likewise.
	* include/ext/new_allocator.h: Likewise.
	* include/ext/pool_allocator.h: Likewise.
	* include/ext/throw_allocator.h: Likewise.
	* include/ext/alloc_traits.h (__allocator_always_compares_equal): Add
	additional specializations.
	* include/std/functional: Add comment about DR resolution.
	* include/std/future: Likewise.
	* include/std/scoped_allocator: Likewise.
	* include/std/thread: Likewise.
	* testsuite/20_util/allocator/requirements/typedefs.cc: New.
	* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error line numbers.

From-SVN: r193638
2012-11-19 22:28:00 +00:00
Jonathan Wakely 207585a63d hashtable.h: Improve comments.
* include/bits/hashtable.h: Improve comments.
	* include/bits/hashtable_policy.h: Likewise.

From-SVN: r193636
2012-11-19 21:33:52 +00:00
François Dumont d4a7f7a15c hashtable_policy.h (_Prime_rehash_policy): Remove automatic shrink.
2012-11-16  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (_Prime_rehash_policy): Remove
	automatic shrink.
	(_Prime_rehash_policy::_M_bkt_for_elements): Do not call
	_M_next_bkt anymore.
	(_Prime_rehash_policy::_M_next_bkt): Move usage of
	_S_growth_factor ...
	(_Prime_rehash_policy::_M_need_rehash): ... here.
	* include/bits/hashtable.h (_Hashtable<>): Adapt.
	* testsuite/performance/23_containers/insert_erase/41975.cc: Add
	_USE_TR1 to force build using std::tr1 container.
	* testsuite/performance/23_containers/insert/unordered_set.cc:
	Likewise.
	* testsuite/performance/23_containers/insert/54075.cc: New.

From-SVN: r193576
2012-11-16 21:28:44 +00:00
Jason Merrill 734f50238f * many: Replace uses of __GXX_EXPERIMENTAL_CXX0X__ with __cplusplus.
From-SVN: r193392
2012-11-10 12:27:22 -05:00
François Dumont ecf07a67d0 re PR libstdc++/54075 ([4.7.1] unordered_map insert still slower than 4.6.2)
2012-11-08  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/54075
	* include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash
	policy state if no rehash.
	* testsuite/23_containers/unordered_set/modifiers/reserve.cc
	(test02): New.

From-SVN: r193339
2012-11-08 20:16:04 +00:00
Paolo Carlini 54ba39f599 array (_GLIBCXX_THROW_OR_ABORT): Move...
2012-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* include/debug/array (_GLIBCXX_THROW_OR_ABORT): Move...
	* include/bits/c++config: ... here.
	* include/bits/shared_ptr_base.h (__throw_bad_weak_ptr): Use it.
	* include/ext/pb_ds/exception.hpp: Likewise.
	* include/ext/throw_allocator.h (__throw_forced_error): Likewise.
	* include/ext/concurrence.h (__throw_concurrence_lock_error,
	__throw_concurrence_unlock_error, __throw_concurrence_broadcast_error,
	__throw_concurrence_wait_error): Likewise.
	* include/tr1/shared_ptr.h (__throw_bad_weak_ptr): Likewise.
	* include/tr1/functional (function<_Res(_ArgTypes...)>::operator()
	(_ArgTypes...)): Likewise.
	* libsupc++/eh_aux_runtime.cc (__cxxabiv1::__cxa_bad_cast,
	__cxxabiv1::__cxa_bad_typeid): Likewise.
	* libsupc++/vec.cc (compute_size): Likewise.
	* libsupc++/new_op.cc (operator new (std::size_t)): Likewise.
	* src/c++11/functexcept.cc: Likewise.
	* testsuite/util/io/illegal_input_error.hpp
	(__throw_illegal_input_error): Likewise.
	* libsupc++/eh_personality.cc: Avoid warning with -fno-exceptions.
	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error line
	numbers.
	* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
	Likewise.
	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Likewise.
	* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.

From-SVN: r193295
2012-11-07 13:20:33 +00:00
Jonathan Wakely d720a22b6e stl_vector.h (vector(size_type)): Add missing allocator parameter.
* include/bits/stl_vector.h (vector(size_type)): Add missing allocator
	parameter.
	* include/bits/stl_bvector.h: Likewise.
	* include/debug/vector (vector(size_type)): Likewise.
	* include/profile/vector (vector(size_type)): Likewise. Pass allocator
	to base constructor.
	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
	Adjust dg-error line numbers.
	* 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: r193284
2012-11-07 09:17:42 +00:00
Paolo Carlini c4ae987730 atomic_base.h: Don't include <cstddef>, use nullptr.
2012-11-06  Paolo Carlini  <paolo.carlini@oracle.com>
  
	* include/bits/atomic_base.h: Don't include <cstddef>, use nullptr.
	* include/std/atomic: Likewise.
	* include/tr2/dynamic_bitset: Likewise.

	* libsupc++/vec.cc (compute_size(std::size_t, std::size_t,
	std::size_t)): Fix for -fno-exceptions.

From-SVN: r193232
2012-11-06 11:03:45 +00:00
Paolo Carlini 935ec36fdd re PR libstdc++/55215 (Constructor seeding is broken for Mersenne twister)
2012-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/55215
	* include/bits/random.tcc (mersenne_twister_engine<>::seed(_Sseq&)):
	Assign state_size to _M_p.
	* testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc:
	New.
	* testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc:
	Likewise.
	* testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc:
	Likewise.
	* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
	55215.cc: Likewise.
	* testsuite/26_numerics/random/discard_block_engine/cons/55215.cc:
	Likewise.
	* testsuite/26_numerics/random/linear_congruential_engine/cons/
	55215.cc: Likewise.

From-SVN: r193181
2012-11-05 19:25:20 +00:00
Paolo Carlini 5bcb3b4d80 re PR libstdc++/55169 (std::discrete_distribution::operator(generator&) makes unnecessary copy of parameter vector)
2012-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/55169
	* include/bits/random.h: Remove all uses of param().
	(chi_squared_distribution<>::__generate_impl(_ForwardIterator,
	_ForwardIterator, _UniformRandomNumberGenerator&): Declare
	* include/bits/random.tcc: ... define.
	* include/ext/random: Remove all uses of param().

From-SVN: r193092
2012-11-02 10:45:25 +00:00
Jonathan Wakely 50799846a5 forward_list.h (forward_list(size_type)): Add missing allocator parameter.
* include/bits/forward_list.h (forward_list(size_type)): Add missing
	allocator parameter.
	(_Fwd_list_node_base): Use NSDMI and define constructor as defaulted.
	(_Fwd_list_node::_M_value): Replace with uninitialized storage.
	(_Fwd_list_node::_M_valptr()): Define functions to access storage.
	(_Fwd_list_iterator, _Fwd_list_const_iterator): Use _M_valptr.
	(_Fwd_list_base::_M_create_node): Only use allocator to construct the
	element not the node.
	* include/bits/forward_list.tcc (_Fwd_list_base::_M_erase_after): Only
	use allocator to destroy the element not the node.
	* testsuite/23_containers/forward_list/cons/11.cc: Remove unused
	headers.
	* testsuite/23_containers/forward_list/cons/12.cc: Likewise.
	* testsuite/23_containers/forward_list/cons/13.cc: New.
	* testsuite/23_containers/forward_list/cons/14.cc: New.

From-SVN: r193086
2012-11-02 01:29:00 +00:00
François Dumont 0dd4969120 hashtable_policy.h (__details::_Before_begin<>): New, combine a base node instance and an allocator.
2012-11-01  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/hashtable_policy.h (__details::_Before_begin<>):
	New, combine a base node instance and an allocator.
	* include/bits/hashtable.h (_Hashtable<>::_M_node_allocator): Remove.
	(_Hashtable<>::_M_before_begin): Rename into _M_bbegin and type
	modified to __detail::_Before_begin<>.
	(_Hashtable<>::_M_node_allocator()): New, get the node allocator
	part of _M_bbegin.
	(_Hashtable<>::_M_before_begin()): New, get the before begin node
	part of _M_bbegin.
	(_Hashtable<>): Adapt to use latter.

From-SVN: r193068
2012-11-01 20:55:51 +00:00
Jonathan Wakely 362261e71f forward_list.h (forward_list::assign): Dispatch to new functions based on assignability of elements.
* include/bits/forward_list.h (forward_list::assign): Dispatch to new
	functions based on assignability of elements.
	(forward_list::_M_assign): Add overloaded functions for assigning
	via assignment or via clearing and insertion.
	(forward_list::_M_assign_val): Likewise.
	(forward_list::_M_move_assign(forward_list&&, false_type)): Do not
	erase elements that are not moved.
	* include/bits/forward_list.tcc (forward_list::operator=): Call
	assign() to copy elements.
	* testsuite/23_containers/forward_list/cons/10.cc: New.
	* testsuite/23_containers/forward_list/cons/11.cc: New.
	* testsuite/23_containers/forward_list/cons/12.cc: New.

From-SVN: r193057
2012-11-01 01:30:34 +00:00
Jonathan Wakely b0b4a25308 forward_list.h (forward_list): Adjust comments.
* include/bits/forward_list.h (forward_list): Adjust comments.
	(forward_list(const forward_list&, const _Alloc&)): Use
	_M_range_initialize to copy elements.
	(forward_list(forward_list&&, const _Alloc&)): Add exception
	specification.
	(_Fwd_list_base(const _Fwd_list_base&, const _Node_alloc_type&)):
	Remove.
	* include/bits/forward_list.tcc (_Fwd_list_base(const _Fwd_list_base&,
	const _Node_alloc_type&)): Remove.
	(_Fwd_list_base(_Fwd_list_base&&, const _Node_alloc_type&)): Fix
	memory leak when allocators are not equal.

From-SVN: r193009
2012-10-31 01:09:59 +00:00
Jonathan Wakely 1ea58d3499 re PR libstdc++/55123 ([C++11] Construction of shared_ptr<const T> from unique_ptr<const T> fails)
PR libstdc++/55123
	* include/bits/shared_ptr_base.h (__shared_count::_S_create_from_up):
	Do not instantiate allocator with element_type.
	* testsuite/20_util/shared_ptr/cons/55123.cc: New.

From-SVN: r192964
2012-10-29 21:49:19 +00:00
François Dumont 099e644e2d unordered_map.h (unordered_map<>): Prefer aggregation to inheritance with _Hashtable.
2012-10-27  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/unordered_map.h (unordered_map<>): Prefer
	aggregation to inheritance with _Hashtable.
	(unordered_multimap<>): Likewise.
	* include/bits/unordered_set.h
	(unordered_set<>(const unordered_set&)):  Use default
	implementation.
	(unordered_set<>(unordered_set&&)): Likewise.
	(unordered_set<>::operator=(const unordered_set&)): Likewise.
	(unordered_set<>::operator=(unordered_set&&)): Likewise.
	(unordered_multiset<>(const unordered_multiset&)): Likewise.
	(unordered_multiset<>(unordered_multiset&&)): Likewise.
	(unordered_multiset<>::operator=(const unordered_multiset&)):
	Likewise.
	(unordered_multiset<>::operator=(unordered_multiset&&)): Likewise.
	* include/debug/unordered_map (operator==): Adapt.
	* include/profile/unordered_map (operator==): Adapt.

From-SVN: r192876
2012-10-27 12:20:18 +00:00