aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
AgeCommit message (Collapse)AuthorFilesLines
2015-01-02re PR libstdc++/64475 (FAIL: ↵Tim Shen1-1/+1
28_regex/algorithms/regex_match/ecma/char/backref.cc) PR libstdc++/64475 * include/bits/regex_executor.tcc (_Executor<>::_M_dfs): Copy the iterator, since the original one shouldn't be mutated. From-SVN: r219151
2014-12-31re PR libstdc++/64441 (A match_results returns an incorrect sub_match if the ↵Tim Shen2-2/+2
sub_match::matched is false) PR libstdc++/64441 * include/bits/regex.tcc (__regex_algo_impl): s/auto/auto&/. * include/bits/regex_executor.tcc (_Executor<>::_M_dfs): Likewise. From-SVN: r219121
2014-12-22basic_string.h: Fix _S_local_capacity for large sizeof(_CharT).Paolo Carlini1-1/+1
2014-12-22 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/basic_string.h: Fix _S_local_capacity for large sizeof(_CharT). From-SVN: r219031
2014-12-22re PR libstdc++/37522 (Incorrect vswprintf prototype breaks __to_xstring)Jonathan Wakely1-2/+3
PR libstdc++/37522 * include/bits/basic_string.h (stod, stof, stoi, stol, stold, stoll, stoul, stoull, to_string): Only use _GLIBCXX_HAVE_BROKEN_VSWPRINTF to guard definition of to_wstring. * testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc: Do not use dg-require-string-conversions. * testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/ stoull.cc: Likewise. * testsuite/21_strings/basic_string/numeric_conversions/char/ to_string.cc: Likewise. From-SVN: r219019
2014-12-22re PR libstdc++/60271 ([DR2369] [C++1y] std::max(initializer_list<T>) cannot ↵Ville Voutilainen6-3/+97
use std::max_element) 2014-12-22 Ville Voutilainen <ville.voutilainen@gmail.com> PR libstdc++/60271 C++14 constexpr min, max, minmax, min_element, max_element and minmax_element. Also constexpr for 20.9.5-20.9.9, aka various library functors. * include/bits/c++config: Add _GLIBCXX14_CONSTEXPR. * include/bits/algorithmfwd.h (min, max, minmax, min_element, max_element): Use it. * include/bits/predefined_ops.h (_Iter_less_iter, __iter_less_iter, _Iter_comp_iter, __iter_comp_iter): Likewise. * include/bits/stl_algo.h (minmax, __minmax_element, minmax_element, min, max, __min_element, min_element, __max_element, max_element) Likewise. * include/bits/stl_algobase.h (min, max): Likewise. * include/bits/stl_function.h (plus, minus, multiplies, divides, modulus, negate, equal_to, not_equal_to, greater, less, greater_equal, less_equal, logical_and, logical_or, logical_not, bit_and, bit_or, bit_xor, bit_not, unary_negate, not1, binary_negate, not2): Likewise. * testsuite/20_util/function_objects/constexpr.cc: New. * testsuite/25_algorithms/max/constexpr.cc: Likewise. * testsuite/25_algorithms/max_element/constexpr.cc: Likewise. * testsuite/25_algorithms/min/constexpr.cc: Likewise. * testsuite/25_algorithms/min_element/constexpr.cc: Likewise. * testsuite/25_algorithms/minmax/constexpr.cc: Likewise. * testsuite/25_algorithms/minmax_element/constexpr.cc: Likewise. * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error. From-SVN: r219015
2014-12-22re PR libstdc++/54354 (TODO extended iomanip manipulators std::get_time and ↵Rüdiger Sonderfeld1-0/+54
std::put_time (C++11, section 27.7.5)) 2014-12-22 Rüdiger Sonderfeld <ruediger@c-plusplus.de> PR libstdc++/54354 * include/std/iomanip (_Get_time): New struct. (get_time): New manipulator. (operator<<): New overloaded function. * testsuite/27_io/manipulators/extended/get_time/char/1.cc: New. * testsuite/27_io/manipulators/extended/get_time/char/2.cc: New. * testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc: New. * testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc: New. From-SVN: r219013
2014-12-22re PR libstdc++/60396 (Missing time_get<>::get() functions)Rüdiger Sonderfeld2-0/+182
2014-12-22 Rüdiger Sonderfeld <ruediger@c-plusplus.de> Jonathan Wakely <jwakely@redhat.com> PR libstdc++/60396 * config/abi/pre/gnu.ver: Add new exports. * include/bits/locale_facets_nonio.h (time_get::get): New overloads. (time_get::do_get): New virtual function. * include/bits/locale_facets_nonio.tcc (time_get::get): Define. (time_get::do_get): Define. * src/c++11/string-inst.cc (time_get::get, time_get::do_get): Add C++11-only instantiations. * testsuite/22_locale/time_get/get/char/1.cc: New. * testsuite/22_locale/time_get/get/char/2.cc: New. * testsuite/22_locale/time_get/get/wchar_t/1.cc: New. * testsuite/22_locale/time_get/get/wchar_t/2.cc: New. Co-Authored-By: Jonathan Wakely <jwakely@redhat.com> From-SVN: r219012
2014-12-21re PR libstdc++/64367 (g++-v5/stdexcept:52:28: error: invalid use of ↵Jonathan Wakely1-1/+1
non-static data member '_M_p') PR libstdc++/64367 * include/std/stdexcept: Don't use non-static member in sizeof. From-SVN: r218997
2014-12-20vector (std::__debug::vector<>::clear()): Do not reset guaranteed capacity.François Dumont1-1/+0
2014-12-20 François Dumont <fdumont@gcc.gnu.org> * include/debug/vector (std::__debug::vector<>::clear()): Do not reset guaranteed capacity. * testsuite/23_containers/vector/bool/allocator/swap.cc: Move propagating_allocator equality and inequality operators to __gnu_test namespace. From-SVN: r218991
2014-12-20c++config: inline __cxx11 namespace within namespace __cxx1998.François Dumont1-3/+7
2014-12-20 François Dumont <fdumont@gcc.gnu.org> * include/bits/c++config: inline __cxx11 namespace within namespace __cxx1998. From-SVN: r218988
2014-12-19New std::string implementation.Jonathan Wakely18-64/+3218
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_CXX11_ABI): Remove. (GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI, GLIBCXX_DEFAULT_ABI): Add. * configure.ac: Use new macros. * configure: Regenerate. * Makefile.in: Regenerate. * doc/Makefile.in: Regenerate. * libsupc++/Makefile.in: Regenerate. * po/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. * include/Makefile.am: Set _GLIBCXX_USE_DUAL_ABI. * include/Makefile.in: Regenerate. * config/abi/pre/gnu.ver: Export symbols related to new std::string. Tighten old patterns to not match new symbols. * config/locale/generic/monetary_members.cc: Guard some definitions to not compile with new ABI. * config/locale/gnu/monetary_members.cc: Likewise. * config/locale/gnu/numeric_members.cc: Prevent double-free. * config/os/gnu-linux/ldbl-extra.ver: Add new __gnu_cxx_ldbl128 exports. Tighten old patterns. * doc/xml/manual/configure.xml: Document new configure options. * doc/html/*: Regenerate. * include/bits/basic_string.h (__cxx11::basic_string): Define new non-reference-counted implementation in inline namespace __cxx11. (stoi, stol, stoll, stof, stod, stold, to_string): Conditionally use inline namespace. (literals::string_literals::operator"): Conditionally use abi-tag. * include/bits/basic_string.tcc (__cxx11::basic_string): Define. * include/bits/c++config: Define _GLIBCXX_USE_DUAL_ABI and LDBL_CXX11_ABI namespace macros. * include/bits/locale_classes.h (locale::name()): Use abi_tag when new ABI is in use. (locale::_S_twinned_facets): New static member. (locale::facet::__shim): Declare new type. (locale::_facet::_M_sso_shim, locale::_facet::_M_cow_shim): New functions for creating shims. (locale::_Impl::_M_facet_unchecked): New member function for use during construction. (locale::_Impl::_M_init_extra): New member functions to create second version of some facets. (collate, collate_byname): Use abi_tag when new ABI is in use. * include/bits/locale_facets.h: Add _GLIBCXX_NUM_CXX11_FACETS macro. (numpunct, numpunct_byname): Use __cxx11 namespace. (num_get::_M_extract_float, num_get::_M_extract_int): Use abi_tag when new ABI is in use. (num_get::__do_get, num_put::__do_put): Do not declare long double compat functions for new ABI. * include/bits/locale_facets.tcc (num_get, num_put): Use abi_tag on definitions. (numpunct, numpunct_byname): Qualify explicit instantiations. * include/bits/locale_facets_nonio.h (time_get, time_get_byname, moneypunct, moneypunct_byname, money_get, money_put, messages, messages_byname): Use new inline namespace macros. (money_get::__do_get, money_put::__do_put): Do not declare long double compat functions for new ABI. * include/bits/locale_facets_nonio.tcc (money_get, money_put): Use new namespace macros. (money_get::__do_get, money_put::__do_put): Do not define for new ABI. * include/bits/localefwd.h (numpunct, numpunct_byname, collate, collate_byname, time_get, time_get_byname, moneypunct, moneypunct_byname, money_get, money_put, messages, messages_byname): Use new namespace macros. * include/bits/regex.h: Use inline namespace macros. * include/bits/stl_list.h (_List_base, list): Use inline namespace instead of abi-tag. * include/bits/stringfwd.h (basic_string): Use namespace macros. * include/std/iosfwd (basic_stringbuf, basic_istringstream, basic_ostringstream, basic_stringstream): Likewise. * include/std/sstream: Likewise. (basic_stringbuf::__xfer_bufptrs): Update streambuf pointers on move. * include/std/stdexcept (__cow_string, __sso_string): New types for indirectly using std::string with either ABI. (logic_error, runtime_error): Replace std::string member with __cow_string when new ABI is in use. Declare non-inline copy constructor and assignment operator. Declare const char* constructors. (domain_error, invalid_argument, length_error, out_of_range, range_error, overflow_error, underflow_error): Declare const char* constructors. * include/std/system_error (error_category): Replace with new definition in inline namespace _V2. (error_code::message, error_condition::message): Use abi_tag on functions returning std::string. * python/libstdcxx/v6/printers.py (StdStringPrinter): Handle new ABI. * src/c++11/Makefile.am: Add new files. * src/c++11/Makefile.in: Regenerate. * src/c++11/compatibility-c++0x.cc: Compile with old std::string ABI. Define old error_category symbols. * src/c++11/cow-fstream-inst.cc: New. Instantiate fstream members using old std::string ABI. * src/c++11/cow-locale_init.cc (locale::_Impl::_M_init_extra): Define. * src/c++11/cow-shim_facets.cc: Define shim facets using old ABI. * src/c++11/cow-sstream-inst.cc: Instantiate stringstreams using old std::string ABI. * src/c++11/cow-stdexcept.cc: Define new constructors and assignment operators. (__cow_string, error_category::_M_message): Define. * src/c++11/cow-string-inst.cc: Explicit instantiations using old std::string. Include src/c++98/istream-string.cc. * src/c++11/cow-wstring-inst.cc: Explicit instantiations using old std::wstring. * src/c++11/cxx11-hash_tr1.cc: Explicit instantiations using new string. * src/c++11/cxx11-ios_failure.cc: Add sanity check. * src/c++11/cxx11-locale-inst.cc: Instantiate facets using new std::string. * src/c++11/cxx11-shim_facets.cc: Define shim facets using new ABI. * src/c++11/cxx11-stdexcept.cc: Define constructors taking new std::string. * src/c++11/cxx11-wlocale-inst.cc: Instantiate facets using new std::wstring. * src/c++11/fstream-inst.cc: Compile with new ABI. * src/c++11/functexcept.cc: Compile with old ABI. * src/c++11/random.cc: Compile with new ABI. * src/c++11/sstream-inst.cc: Compile with new ABI. * src/c++11/string-inst.cc: Explicit instantiations for new string. * src/c++11/system_error.cc (__sso_string, error_category::_M_message): Define. * src/c++11/wstring-inst.cc: Compile with new ABI. * src/c++98/Makefile.am: Compile some host files twice for old and new std::string. Add new files. * src/c++98/Makefile.in: Regenerate. * src/c++98/compatibility-ldbl.cc: Compile with old ABI. * src/c++98/compatibility.cc: Likewise. * src/c++98/concept-inst.cc: Likewise. * src/c++98/hash_tr1.cc: Likewise. * src/c++98/istream-string.cc: New file defining functions that work with istream and std::string moved from ... * src/c++98/istream.cc: ... here. * src/c++98/cow-istream-string.cc: Recompile istream-string.cc with old ABI. * src/c++98/locale-inst.cc: Adjust facet instantiations to work for either ABI. * src/c++98/locale.cc (locale::_M_install_facet, locale::_M_install_cache): Handle twinned facets. * src/c++98/locale-facets.cc: Compile with old std::string ABI. (__verify_grouping): Define new overload and old std::string version. * src/c++98/locale_init.cc: Initialize twinned facets. * src/c++98/localename.cc: Likewise. * src/c++98/misc-inst.cc: Instantiate C++98-only std::string members. (__verify_grouping): Define new std::string version. * src/c++98/stdexcept.cc: Compile with old std::string ABI. * src/c++98/wlocale-inst.cc: Likewise. * testsuite/18_support/50594.cc: Adjust to work with SSO strings. * testsuite/21_strings/basic_string/capacity/1.cc: Likewise. * testsuite/21_strings/basic_string/capacity/char/1.cc: Likewise. * testsuite/21_strings/basic_string/capacity/char/18654.cc: Likewise. * testsuite/21_strings/basic_string/capacity/char/2.cc: Likewise. * testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Likewise. * testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc: Likewise. * testsuite/21_strings/headers/string/synopsis.cc: Use inline namespace macros. * testsuite/23_containers/headers/list/synopsis.cc: Likewise. * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Set dg-options so correct exception type can be caught. * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise. * testsuite/27_io/basic_istream/extractors_arithmetic/char/ exceptions_failbit.cc: Likewise. * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/ exceptions_failbit.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/char/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/wchar_t/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise. * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/ exceptions_null.cc: Likewise. * testsuite/27_io/ios_base/storage/2.cc: Likewise. * testsuite/27_io/ios_base/failure/cxx11.cc: Disable for old ABI. * testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error. * testsuite/libstdc++-prettyprinters/libfundts.cc: Use old ABI. * testsuite/libstdc++-prettyprinters/simple.cc: Likewise. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise. * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise. * testsuite/util/exception/safety.h: Adjust member function types for new std::string. * testsuite/util/testsuite_abi.cc: Add new version and ignore __float128 symbols in __cxx11 namespace. From-SVN: r218964
2014-12-17re PR libstdc++/64302 (The match_results::cbegin()/cend() return incorrect ↵Tim Shen2-12/+18
results) PR libstdc++/64302 PR libstdc++/64303 * include/bits/regex.h (match_results::cbegin, match_results::cend, regex_token_iterator::regex_token_iterator, regex_token_iterator::_M_normalize_result): Fix match_results cbegin and cend and regex_token_iterator::_M_result invariant. * include/bits/regex.tcc: Fix regex_token_iterator::_M_result invariant. * testsuite/28_regex/iterators/regex_token_iterator/64303.cc: Testcase. From-SVN: r218810
2014-12-13re PR libstdc++/64239 (regex_iterator::operator= should copy ↵Tim Shen2-28/+14
match_results::position) PR libstdc++/64239 * include/bits/regex.h (match_results<>::match_results, match_results<>::operator=, match_results<>::position, match_results<>::swap): Remove match_results::_M_in_iterator. Fix ctor/assign/swap. * include/bits/regex.tcc: (__regex_algo_impl<>, regex_iterator<>::operator++): Set match_results::_M_begin as "start position". * testsuite/28_regex/iterators/regex_iterator/char/ string_position_01.cc: Test cases. From-SVN: r218710
2014-12-13Post-Urbana updates to Library Fundamentals v1.Jonathan Wakely4-193/+45
* include/experimental/any (any): Remove allocator support and update feature-testing macro. * include/experimental/functional: Update feature-testing macro. * include/experimental/optional (optional::_M_get()): Add constexpr. (optional::operator*(), optional::value()): Overload and add ref-qualifiers. Update feature-testing macro. * include/experimental/string_view (basic_string_view::clear): Remove and update feature-testing macro. * testsuite/experimental/any/cons/3.cc: Remove. * testsuite/experimental/any/cons/4.cc: Remove. * testsuite/experimental/any/misc/any_cast.cc: Remove allocator tests. * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error. * testsuite/experimental/string_view/capacity/1.cc: Don't test clear(). From-SVN: r218709
2014-12-13re PR libstdc++/58594 (std::make_shared does not accept const types as ↵Jonathan Wakely1-4/+5
parameters) PR libstdc++/58594 * include/bits/shared_ptr_base.h: Real fix for cv-qualified types. From-SVN: r218698
2014-12-12re PR libstdc++/58594 (std::make_shared does not accept const types as ↵Jonathan Wakely1-1/+1
parameters) PR libstdc++/58594 * include/bits/shared_ptr_base.h: Cast away cv-quals. * testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc: New. * testsuite/20_util/shared_ptr/creation/private.cc: Make allocator rebindable so test passes with -fno-rtti. From-SVN: r218691
2014-12-12re PR libstdc++/64276 (would be better to use __cpp_exceptions rather than ↵Jonathan Wakely11-40/+40
__EXCEPTIONS to determine whether exceptions are available) PR libstdc++/64276 * doc/doxygen/user.cfg.in: Define __cpp_exceptions and __cpp_rtti. * doc/html/manual/using_exceptions.html: Regenerate. * doc/xml/manual/using_exceptions.xml: Use SD-6 feature-testing macros, __cpp_exceptions and __cpp_rtti, instead of __EXCEPTIONS and __GXX_RTTI. * include/bits/c++config: Likewise. * include/bits/locale_classes.tcc: Likewise. * include/bits/shared_ptr.h: Likewise. * include/bits/shared_ptr_base.h: Likewise. * include/debug/formatter.h: Likewise. * include/experimental/any: Likewise. * include/ext/rope: Likewise. * include/ext/ropeimpl.h: Likewise. * include/std/functional: Likewise. * include/tr1/functional: Likewise. * include/tr1/shared_ptr.h: Likewise. * libsupc++/eh_call.cc: Likewise. * libsupc++/eh_personality.cc: Likewise. * libsupc++/exception_defines.h: Likewise. * libsupc++/exception_ptr.h: Likewise. * libsupc++/guard.cc: Likewise. * libsupc++/pbase_type_info.cc: Likewise. * libsupc++/pointer_type_info.cc: Likewise. * libsupc++/vterminate.cc: Likewise. * src/c++11/thread.cc: Likewise. From-SVN: r218679
2014-12-12stl_iterator.h (make_reverse_iterator): LWG DR 2285.Jonathan Wakely2-0/+14
* include/bits/stl_iterator.h (make_reverse_iterator): LWG DR 2285. * include/std/tuple: Add feature-test macro. * testsuite/24_iterators/reverse_iterator/make.cc: New. From-SVN: r218670
2014-12-10Implement LWG DR 2329 and DR 2332.Jonathan Wakely1-0/+51
* include/bits/regex.h (regex_match, regex_search): LWG DR 2329, add deleted overloads for rvalue strings. (regex_iterator, regex_token_iterator): LWG DR 2332, add deleted constructors for rvalue regexes. * testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc: New. * testsuite/28_regex/algorithms/regex_search/dr2329_neg.cc: New. * testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc: New. * testsuite/28_regex/iterators/regex_token_iterator/ctors/char/ dr2332_neg.cc: New. From-SVN: r218555
2014-12-10future (__future_base::_Setter::operator(), [...]): Make call operators const.Jonathan Wakely1-6/+6
* include/std/future (__future_base::_Setter::operator(), __future_base::_Task_setter::operator()): Make call operators const. From-SVN: r218553
2014-12-10locale_facets.tcc (numpunct::_M_cache): Avoid calling virtual functions twice.Jonathan Wakely3-32/+36
* include/bits/locale_facets.tcc (numpunct::_M_cache): Avoid calling virtual functions twice. Only update _M_allocated after all allocations have succeeded. * include/bits/locale_facets_nonio.tcc (moneypunct::_M_cache): Likewise. * include/bits/locale_facets_nonio.h (__timepunct::_M_cache): Remove unused declaration. From-SVN: r218552
2014-12-09re PR libstdc++/64203 (shared_mutex compile errors on bare-metal targets)Jonathan Wakely1-6/+7
PR libstdc++/64203 * include/std/shared_mutex: Fix preprocessor conditions. * testsuite/experimental/feat-cxx14.cc: Check conditions. From-SVN: r218511
2014-12-05hashtable_policy.h (_Map_base::operator[], [...]): Simplify definitions with ↵Jonathan Wakely1-12/+8
trailing return types. * include/bits/hashtable_policy.h (_Map_base::operator[], _Map_base::at): Simplify definitions with trailing return types. From-SVN: r218416
2014-12-04re PR libstdc++/64140 (match_results.prefix() returns an incorrect result if ↵Tim Shen1-2/+6
regex_iterator holds a zero-length match) PR libstdc++/64140 * include/bits/regex.tcc (regex_iterator<>::operator++): Update prefix.matched after modifying prefix.first. * testsuite/28_regex/iterators/regex_iterator/char/64140.cc: New testcase. From-SVN: r218340
2014-12-03re PR libstdc++/13631 (Problems in messages)François Dumont1-2/+4
2014-12-03 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/13631 * include/bits/codecvt.h (codecvt<char, char, mbstate_t>): friend class std::messages<char>. (codecvt<wchar_t, char, mbstate_t>): friend class std::messages<wchar_t>. * config/locale/gnu/messages_member.h (messages<char>::do_open): Specialized. (messages<char>::do_close): Likewise. (messages<wchar_t>::do_open): Likewise. (messages<wchar_t>::do_close): Likewise. * config/locale/gnu/messages_member.cc: (messages<char>::do_open): Implement. Use bind_textdomain_codeset based on codecvt<char, char, mbstate_t>._M_c_locale_codecvt code set. Use internal cache to keep opened domain name with locale information. (messages<wchar_t>::do_open): Likewise with codecvt<wchar_t, char, mbstate_t>. (messages<char>::do_close): Implement. Clean cache information. (messages<wchar_t>::do_close): Likewise. (get_glibc_msg): New. Use dgettext rather than gettext using cached domain name associated to catalog id. (messages<char>::do_get): Use latter. (messages<wchar_t>::do_get): Likewise and use also cached locale codecvt<wchar_t, char, mbstate_t> facet to convert wchar_t default value to char and the result back to wchar_t. * testsuite/22_locale/messages/13631.cc: New. * testsuite/22_locale/messages/members/char/2.cc: Use also fr_FR locale for charset conversion to get the expected accented character. From-SVN: r218329
2014-12-03regex_compiler.h (_S_cache_size): Multiply the RHS of the shift-expression ↵Marek Polacek1-1/+4
by _UseCache::value. * include/bits/regex_compiler.h (_S_cache_size): Multiply the RHS of the shift-expression by _UseCache::value. From-SVN: r218322
2014-12-03re PR libstdc++/64168 (FAIL: 30_threads/async/sync.cc execution test)Jonathan Wakely1-1/+1
PR libstdc++/64168 * include/std/future (_Deferred_state::_M_has_deferred): Fix return. From-SVN: r218321
2014-12-03hashtable.h: Fix whitespace and simplify function definitions with trailing ↵Jonathan Wakely1-158/+126
return types. * include/bits/hashtable.h: Fix whitespace and simplify function definitions with trailing return types. From-SVN: r218309
2014-12-02Define *_at_thread_exit() functions.Jonathan Wakely2-29/+206
* config/abi/pre/gnu.ver: Add new exports. * include/std/condition_variable (notify_all_at_thread_exit): Declare. (__at_thread_exit_elt): New base class. * include/std/future: Add comments documenting the implementation. (__future_base::_State_baseV2::_State_baseV2()): Use brace-or-equal initializers and define constructor as defaulted. (__future_base::_State_baseV2::_M_ready): Replace member function with member variable. (__future_base::_State_baseV2::_M_set_result): Set _M_ready. (__future_base::_State_baseV2::_M_set_delayed_result): Define. (__future_base::_State_baseV2::_M_break_promise): Set _M_ready. (__future_base::_State_baseV2::_Make_ready): New helper class. (__future_base::_Deferred_state::_M_has_deferred): Remove requirement for caller to own mutex. (__future_base::_Async_state_impl::~_Async_state_impl): Call join directly. (__future_base::_Task_state_base::_M_run): Take arguments by reference. (__future_base::_Task_state_base::_M_run_delayed): Declare new pure virtual function. (__future_base::_Task_state::_M_run_delayed): Define override. (promise::set_value_at_thread_exit): Define. (promise::set_exception_at_thread_exit): Define. (packaged_task::make_ready_at_thread_exit): Define. * src/c++11/condition_variable.cc (notify_all_at_thread_exit): Define. * src/c++11/future.cc (__future_base::_State_baseV2::_Make_ready::_M_set): Define. * testsuite/30_threads/condition_variable/members/3.cc: New. * testsuite/30_threads/packaged_task/members/at_thread_exit.cc: New. * testsuite/30_threads/promise/members/at_thread_exit.cc: New. From-SVN: r218255
2014-12-01re PR libstdc++/63840 (std::function copy constructor deletes an ↵Jonathan Wakely2-3/+3
uninitialized pointer if new fails) PR libstdc++/63840 * include/std/functional (function::function(const function&)): Set _M_manager after operations that might throw. * include/tr1/functional (function::function(const function&), function::function(_Functor, _Useless)): Likewise. * testsuite/20_util/function/63840.cc: New. * testsuite/tr1/3_function_objects/function/63840.cc: New. From-SVN: r218215
2014-11-29nonio.h (__timepunct): Remove unused typedef.Jonathan Wakely1-7/+5
* include/bits/locale_facets/nonio.h (__timepunct): Remove unused typedef. (time_get): Likewise. Fix comments. From-SVN: r218183
2014-11-25re PR libstdc++/63920 (Any regular expression should not match an empty ↵Tim Shen2-8/+8
sequence if match_not_null is specified) PR libstdc++/63920 * include/bits/regex_executor.h: Make _M_begin non const. * include/bits/regex_executor.tcc (_Executor<>::_M_search): Increase _M_begin in search algorithm, so that _M_begin is treated as "current start position" for each search iteration. * testsuite/28_regex/algorithms/regex_search/ecma/flags.cc: New testcase. From-SVN: r218037
2014-11-17re PR c++/33911 (attribute deprecated vs. templates)Jason Merrill2-0/+12
PR c++/33911 gcc/cp/ * call.c (build_call_a): Don't warn_deprecated_use here. (build_over_call): Or here. * decl2.c (mark_used): Do it here. (is_late_template_attribute): Attribute deprecated is not deferred. (cplus_decl_attributes): Propagate TREE_DEPRECATED out to the template. * parser.c (cp_parser_template_name): Warn about deprecated template. (cp_parser_template_argument): Likewise. libstdc++-v3/ * include/backward/binders.h: Suppress -Wdeprecated-declarations. * include/ext/array_allocator.h: Likewise. From-SVN: r217677
2014-11-14Define C++11 version of std::ios_base::failure.Jonathan Wakely2-10/+67
* config/abi/pre/gnu.ver: Add new exports. * include/bits/ios_base.h (ios_base::failure): New definition using abi_tag. (io_errc, make_error_code, make_error_category, iostream_category): Define. * include/std/system_error (system_error): Add char* constructors. * src/c++11/Makefile.am: Add new file. * src/c++11/Makefile.in: Regenerate. * src/c++11/cxx11-ios_failure.cc: New file. * src/c++98/ios_failure.cc: Compile old definition without abi_tag. * testsuite/27_io/ios_base/failure/cxx11.cc: New. * testsuite/27_io/ios_base/failure/what-1.cc: Allow string returned by ios_base::failure::what() to contain additional data. * testsuite/27_io/ios_base/failure/what-2.cc: Likewise.. * testsuite/27_io/ios_base/failure/what-3.cc: Likewise.. * testsuite/27_io/ios_base/failure/what-big.cc: Likewise.. From-SVN: r217559
2014-11-14regex.h: Support embedded zeros in sub_match comparisons (DR 2217)Daniel Kruegler1-4/+16
2014-11-13 Daniel Kruegler <daniel.kruegler@gmail.com> * include/bits/regex.h: Support embedded zeros in sub_match comparisons (DR 2217) * testsuite/28_regex/sub_match/embedded_zeros_cmp.cc: Add test cases for embedded zeros From-SVN: r217535
2014-11-13re PR libstdc++/63775 ([C++11] Regex range with leading dash (-) not working)Tim Shen2-17/+53
PR libstdc++/63775 * include/bits/regex_compiler.h (_Compiler<>::_M_expression_term, _BracketMatcher<>::_M_make_range): Throw regex_erorr on invalid range like [z-a]. Change _M_expression_term interface. * include/bits/regex_compiler.tcc ( _Compiler<>::_M_insert_bracket_matcher, _Compiler<>::_M_expression_term): Rewrite bracket expression parsing. * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: Add testcases and move file out of extended. From-SVN: r217461
2014-11-12std::shared_ptr atomic operationsJonathan Wakely4-0/+333
PR libstdc++/57250 * config/abi/pre/gnu.ver: Export new symbols. * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/shared_ptr_atomic.h: Define atomic access functions. * include/std/memory: Include new header. * src/c++11/shared_ptr.cc (_Sp_locker): Define and use mutex pool. * testsuite/20_util/shared_ptr/atomic/1.cc: New. * testsuite/20_util/shared_ptr/atomic/2.cc: New. * testsuite/20_util/shared_ptr/atomic/3.cc: New. From-SVN: r217452
2014-11-12Implement resolutions of LWG 2399, 2400 and 2401.Jonathan Wakely3-24/+38
* include/bits/shared_ptr.h (shared_ptr, weak_ptr): Define _Convertible alias template to simplify constraints. (shared_ptr(unique_ptr<TD>&&)): Constrain (LWG 2399). * include/bits/shared_ptr_base.h: Likewise. (_Sp_counted_deleter::_M_get_deleter()): Use addressof (LWG 2400). * include/std/functional (function::operator=(nullptr_t)): Add noexcept (LWG 2401). * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error. * testsuite/20_util/shared_ptr/cons/void_neg.cc: Adjust dg-error. From-SVN: r217442
2014-11-12LWG DR 2315. weak_ptr should be movableJonathan Wakely2-20/+88
* include/bits/shared_ptr.h (weak_ptr): Add move constructor and assignment. * include/bits/shared_ptr_base.h (__weak_count, __weak_ptr): Likewise. Use nullptr and injected class name. * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error. * testsuite/20_util/shared_ptr/cons/void_neg.cc: Adjust dg-error. From-SVN: r217413
2014-11-12optional (_Has_addressof): Check for non-member operator&.Jonathan Wakely1-6/+18
* include/experimental/optional (_Has_addressof): Check for non-member operator&. * testsuite/experimental/optional/observers/2.cc: Add operator&. * testsuite/experimental/optional/constexpr/observers/2.cc: Likewise. From-SVN: r217397
2014-11-11Define __void_t and SFINAE-friendly iterator_traits.Jonathan Wakely4-39/+27
* include/std/type_traits (__void_t): Define new alias template. (_GLIBCXX_HAS_NESTED_TYPE): Redefine using __void_t. * include/std/functional (_Maybe_get_result_type): Likewise. * include/bits/stl_iterator_base_types.h (__iterator_traits): Likewise. * include/bits/uses_allocator.h (__uses_allocator_helper): Likewise. * testsuite/20_util/bind/ref_neg.cc: Adjust dg-error. * testsuite/20_util/reference_wrapper/typedefs-3.cc: Adjust to changes in _GLIBCXX_HAS_NESTED_TYPE. From-SVN: r217395
2014-11-11Make std::mem_fn work with varargs functions.Jonathan Wakely2-149/+81
* include/std/functional (_Mem_fn_traits): Add partial specializations for varargs functions. (_Mem_fn_base): Do not check arguments are convertible for varargs. (_Bind_check_arity): Add partial specializations for varargs functions. * include/std/type_traits (__bool_constant): Add alias template. * testsuite/20_util/bind/ref_neg.cc: Adjust dg-error. * testsuite/20_util/bind/refqual.cc: New, test ref-qualifiers. * testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error. * testsuite/20_util/function_objects/mem_fn/refqual.cc: Test varargs. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust dg-error. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust dg-error. From-SVN: r217393
2014-11-11re PR libstdc++/61107 (stl_algo.h: std::__inplace_stable_partition() doesn't ↵François Dumont1-60/+37
process the whole data range) 2014-11-11 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/61107 * include/bits/stl_algo.h (__inplace_stable_partition): Delete. (__stable_partition_adaptive): Return __first if range length is 1. (__stable_partition): Adapt. * testsuite/util/testsuite_new_operators.h: New. * testsuite/25_algorithms/stable_sort/1.cc: Test algo in simulated constraint memory context. * testsuite/25_algorithms/inplace_merge/1.cc: Likewise. * testsuite/25_algorithms/stable_partition/1.cc: Likewise. From-SVN: r217370
2014-11-11re PR libstdc++/63811 (r217322 breaks bootstrap)Jonathan Wakely1-1/+1
PR libstdc++/63811 * include/bits/stl_deque.h (_Deque_base::_M_move_impl()): Avoid using badname. From-SVN: r217343
2014-11-10Fix std::deque move construction with non-equal allocators.Jonathan Wakely1-8/+42
* include/bits/stl_deque.h (_Deque_base::_Deque_base(_Deque_base&&)): Dispatch according to whether allocators are always equal. (_Deque_base::_M_move_impl()): Implement move-from state. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Fix 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. From-SVN: r217322
2014-11-10Major maintenance patch of the profile mode.François Dumont22-1507/+1606
2014-11-10 François Dumont <fdumont@gcc.gnu.org> Major maintenance patch of the profile mode. * include/profile/impl/profiler_container_size.h (__container_size_info()): Delete. (__container_size_info(const __container_size_info&)): Delete. (virtual ~__container_size_info()): Delete. (__container_size_info(__stack_t, size_t)): Delete. (__container_size_info(__stack_t)): New. (__container_size_info::__init(size_t)): New. (__container_size_info::__merge): Call __object_info_base::__merge. (__trace_container_size::__construct): Delete declaration. (__trace_container_size::__insert): Return __container_size_info*, call __init. * include/profile/impl/profiler_hash_func.h (__hashfunc_into()): Delete. (__hashfunc_info(const __hashfunc_info&)): Delete. (virtual ~__hashfunc_info()): Delete. (__hashfunc_info::__merge): Call __object_info_base::__merge. (__trace_hash_func::__insert): Delete. (__trace_hash_func_free): New. (__trace_hash_func_report): Call __trace_report. (__trace_hash_func_construct): Return __hashfunc_info*. Add check for reentrancy. * include/profile/impl/profiler_hashtable_size.h (__trace_hashtable_size_free): New. (__trace_hashtable_size_report): Call __trace_report. (__trace_hashtable_size_construct): Return __container_size_info*. Add check for reentrancy. * include/profile/impl/profiler_list_to_slist.h (__list2slist_info()): Delete. (__list2slist_info(const __list2slist_info&)): Delete. (virtual ~__list2slist_info()): Delete. (__trace_list_to_slist::__merge(const __list2slist_info&)): Delete. (__trace_list_to_slist::__opr_rewind(const void*)): Delete. (__trace_list_to_slist::__record_operation(const void*)): Delete. (__trace_list_to_slist::__insert(const __object_t, __stack_t)): Delete. (__trace_list_to_slist::__destruct): Only call __retire_object. (__trace_list_to_slist_free()): New. (__trace_list_to_slist_report): Call __trace_report. (__trace_list_to_slist_construct): Return __list2slist_info*. Add check for reentrancy. * include/profile/impl/profiler_list_to_vector.h (__list2vector_info()): Delete. (__list2vector_info(const __list2vector_info&)): Delete. (virtual ~__list2vector_info()): Delete. (_list2vector_info::__is_valid): Delete. (_list2vector_info::__set_invalid): Delete. (_list2vector_info::__opr_iterate): Use atomic operation. (_list2vector_info::_M_valid): Delete. (__trace_list_to_vector::__insert): Delete. (__trace_list_to_vector::__find): Delete. (__trace_list_to_vector::__opr_insert): Delete. (__trace_list_to_vector::__opr_iterate): Delete. (__trace_list_to_vector::__invalid_operator): Delete. (__trace_list_to_vector::__resize): Delete. (__trace_list_to_vector_free): New. (__trace_list_to_vector_report): Call __trace_report. (__trace_list_to_vector_construct): Return __list2vector_info*. Add check for reentrancy. * include/profile/impl/profiler_map_to_unordered_map.h (__map2umap_info()): Delete. (__map2umap_info(const __map2umap_info&)): Delete. (virtual ~__map2umap_info()): Delete. (__map2umap_info::__record_iterate): Use atomic operation. (__map2umap_info::__set_iterate_costs): New. (__map2umap_info::__record_invalidate): Delete. (__map2umap_info::_M_valid): Delete. (__trace_map2umap::__destruct): New. (__trace_map_to_unordered_map_free): New. (__trace_map_to_unordered_map_report): Call __trace_report. (__trace_map_to_unordered_map_construct): Return __map2umap_info*. Add check for reentrancy. * include/profile/impl/profiler_node.h (__object_t): Delete typedef. (__get_stack): Return null stack trace in case of (bad_alloc) exception. (__object_info_base()): Delete. (__object_info_base(const __object_info_base&)): Delete. (virtual ~__object_info_base()): Delete. (__object_info_base::__set_invalid): New. (__object_info_base::__merge): New. (virtual void __write(FILE*)): Delete. (class __stack_info_base): Delete. * include/profile/impl/profiler_trace.h (__global_lock): Rename into __global_mutex. (__trace_vector_size_free): New declaration. (__trace_hashtable_size_free): Likewise. (__trace_hash_func_free): Likewise. (__trace_vector_to_list_free): Likewise. (__trace_list_to_slist_free): Likewise. (__trace_list_to_vector_free): Likewise. (__trace_map_to_unordered_map_free): Likewise. (__trace_base::~__trace_base()): Not virtual anymore. Delete stored backtrace information. (__trace_base::__add_object): Return __object_info*, take only a stack trace. (__trace_base::__get_object_info): Delete. (__trace_base::__retire_object): Take __object_info* instead of __object_t. (__trace_base::__object_table_lock): Delete. (__trace_base::__stack_table_lock): Delete. (__trace_base::__object_table_t): Delete typedef. (__trace_base::__object_table): Delete. (__trace_base::__trace_mutex): New. (__trace_base::__object_byte_size): New. (__trace_report): New. (__report): Use __gnu_cxx::__scoped_lock to lock/unlock __global_mutex rather than explicitely calling lock() method, exception safe. (__report_and_free): New. Call __report and free all profile mode resources. (__profcxx_init_unconditional): Use __scoped_lock. Register __report_and_free with atexit. * include/profile/impl/profiler_vector_size.h (__trace_vector_size_free): New. (__trace_vector_size_report): Call __trace_report. (__trace_vector_size_construct): Return __container_size_info*. Add check for reentrancy. * include/profile/impl/profiler_vector_to_list.h (__vector2list_info()): Delete. (virtual ~__vector2list_info()): Delete. (__vector2list_info(const __vector2list_info&)): Delete. (__vector2list_info::__merge): Call __object_info_base::__merge. (__vector2list_info::__is_valid): Delete. (__vector2list_info::__set_valid): Delete. (__vector2list_info::__opr_find): Delete. (__vector2list_info::_M_valid): Delete. (__trace_vector_to_list::__insert): Delete. (__trace_vector_to_list::__find): Delete. (__trace_vector_to_list::__opr_insert): Delete. (__trace_vector_to_list::__opr_iterate): Delete. (__trace_vector_to_list::__invalid_operator): Delete. (__trace_vector_to_list::__resize): Delete. (__trace_vector_to_list::__opr_find): Delete. (__trace_vector_to_list_free): New. (__trace_vector_to_list_report): Call __trace_report. (__trace_vector_to_list_construct): Return __vector2list_info*. Add check for reentrancy. * include/profile/iterator_tracker.h (__iterator_tracker<>::operator=): Add missing _M_ds assignment. (__iterator_tracker<>::_M_find): Delete. * include/profile/impl/profiler.h ([_GLIBCXX_PROFILE_REENTRANCE_GUARD]): Delete. (__container_size_info): Add class declaration. (__hashfunc_info): Likewise. (__map2umap_info): Likewise. (__vector2list_info): Likewise. (__list2slist_info): Likewise. (__list2vector_info): Likewise. (__trace_list_to_set_destruct): Delete declaration. (__trace_list_to_set_construct): Likewise. (__trace_list_to_set_insert): Likewise. (__trace_list_to_set_iterate): Likewise. (__trace_list_to_set_invalid_operator): Likewise. (__trace_list_to_set_find): Likewise. ([__profcxx_report]): Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_turn_on]): Likewise. ([__profcxx_turn_off]): Likewise. ([__profcxx_is_invalid]): Likewise. ([__profcxx_is_on]): Likewise. ([__profcxx_is_off]): Likewise. ([__profcxx_hashtable_resize]): Likewise. ([__profcxx_hashtable_destruct]): Likewise. ([__profcxx_hashtable_construct]): Likewise. ([__profcxx_vector_size_construct]): Likewise. ([__profcxx_vector_size_resize]): Likewise. ([__profcxx_vector_size_destruct]): Likewise. ([__profcxx_inefficient_hash_is_on]): Delete. ([__profcxx_hash_func_construct]): Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_hash_func_destruct]): Likewise. ([__profcxx_vector_construct2]): Rename into... ([__profcxx_vector2list_construct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_insert]): Rename into... ([__profcxx_vector2list_insert]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_iterate]): Rename into... ([__profcxx_vector2list_iterate]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_invalid_operator]): Rename into... ([__profcxx_vector2list_invalid_operator]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_resize2]): Rename into... ([__profcxx_vector2list_resize]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_destruct2]): Rename into... ([__profcxx_vector2list_destruct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_vector_find]): Delete. ([__profcxx_list_construct2]): Rename into... ([__profcxx_list2vector_construct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_insert]): Rename into... ([__profcxx_list2vector_insert]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_iterate]): Rename into... ([__profcxx_list2vector_iterate]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([_profcxx_list_invalid_operator]): Rename into... ([__profcxx_list2vector_invalid_operator]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_destruct2]): Rename into... ([__profcxx_list2vector_destruct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_construct]): Rename into... ([__profcxx_list2slist_construct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_rewind]): Rename into... ([__profcxx_list2slist_rewind]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_operation]): Rename into... ([__profcxx_list2slist_operation]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_list_destruct]): Rename into... ([__profcxx_list2slist_destruct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_construct]): Rename into... ([__profcxx_map2umap_construct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_insert]): Rename into... ([__profcxx_map2umap_insert]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_erase]): Rename into... ([__profcxx_map2umap_erase]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_iterate]): Rename into... ([__profcxx_map2umap_iterate]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_invalidate]): Rename into... ([__profcxx_map2umap_invalidate]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_find]): Rename into... ([__profcxx_map2umap_find]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. ([__profcxx_map_to_unordered_map_destruct]): Rename into... ([__profcxx_map2umap_destruct]): ... this. Remove usage of _GLIBCXX_PROFILE_REENTRANCE_GUARD. * include/profile/list (_List_profile): Adapt. (_List_profile::_M_profile_construct): New. (_List_profile()): Call latter. (_List_profile::_M_profile_destruct): New. (~_List_profile()): Call latter. (_List_profile::_M_swap): New. (_List_profile(_List_profile&&)): Call latter. (_List_profile::operator=(const _List_profile&)): Reinit profile structures. (_List_profile::operator=(_List_profile&&)): Move profile struct and re-init profile structures on moved instance. (std::__profile::list<>): Adapt. * include/profile/ordered_base.h (_Ordered_profile::_M_profile_iterate): New. (_Ordered_profile::_M_profile_construct): New. (_Ordered_profile()): Call latter. (_Ordered_profile::_M_swap): New. (_Ordered_profile(_Ordered_profile&&)): Call latter. (_Ordered_profile::operator=(const _Ordered_profile&)): Reinit profiling. (_Ordered_profile::operator=(_Ordered_profile&&)): Swap and reinit profiling on the moved instance. (_Ordered_profile::_M_profile_destruct): New. (~_Ordered_profile()): Call latter. * include/profile/map.h (std::__profile::map<>): Add profiling on iterators. Adapt. * include/profile/multimap.h (std::__profile::multimap<>): Likewise. * include/profile/set.h (std::__profile::set<>): Likewise. * include/profile/multiset.h (std::__profile::multiset<>): Likewise. * include/profile/unordered_base.h (_Unordered_profile::_M_profile_construct): New. (_Unordered_profile()): Call latter. (_Unordered_profile::_M_swap): New. (_Unordered_profile(_Unordered_profile&&)): Call latter. (_Unordered_profile::operator=(const _Unordered_profile&)): Reinit profiling. (_Unordered_profile::operator=(_Unordered_profile&&)): Swap and reinit profiling on the moved instance. (_Unordered_profile::_M_profile_destruct): New. (~_Ordered_profile()): Call latter. * include/profile/unordered_map (std::__profile::unordered_map<>): Adapt. (std::__profile::unordered_multimap<>): Adapt. * include/profile/unordered_set (std::__profile::unordered_set<>): Adapt. (std::__profile::unordered_multiset<>): Adapt. * include/profile/vector (_Vector_profile_pre::_M_profile_destruct): Move... (_Vector_profile_post::_M_profile_destruct): ...here. (_Vector_profile_post::_M_profile_construct): New. (_Vector_profile_post()): Call latter. (std::__profile::vector<>): Adapt. * testsuite/ext/profile/mh.cc: Rename into... * testsuite/ext/profile/replace_new.cc: ... this and fix test. From-SVN: r217321
2014-11-05re PR libstdc++/63698 (std::set leaks nodes on assignment)François Dumont1-11/+18
2014-11-04 François Dumont <fdumont@gcc.gnu.org> Jonathan Wakely <jwakely@redhat.com> PR libstdc++/63698 * include/bits/stl_tree.h (_Reuse_or_alloc_node): Simplify constructor. Always move to the left node if there is one. * testsuite/23_containers/set/allocator/move_assign.cc (test04): New. Co-Authored-By: Jonathan Wakely <jwakely@redhat.com> From-SVN: r217154
2014-11-04numeric.h: Do not use default arguments in function template redeclarations ↵Jonathan Wakely1-6/+3
(definitions). * include/parallel/numeric.h: Do not use default arguments in function template redeclarations (definitions). From-SVN: r217069
2014-11-04Do not assume allocator is assignable.Jonathan Wakely1-15/+3
* include/bits/stl_deque.h (_Deque_base(_Deque_base&&)): Copy allocator instead of moving. * testsuite/23_containers/deque/allocator/move-2.cc: New. From-SVN: r217068
2014-11-04Make reference_wrapper trivially copyable.Jonathan Wakely1-8/+2
* include/std/functional (reference_wrapper): Define copy constructor and copy assignment as defaulted. * testsuite/20_util/bind/ref_neg.cc: Adjust dg-error. * testsuite/20_util/reference_wrapper/requirements.cc: New. From-SVN: r217067