diff options
Diffstat (limited to 'libstdc++-v3/ChangeLog')
-rw-r--r-- | libstdc++-v3/ChangeLog | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0734d215691..537100e59f9 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,162 @@ +2017-03-17 Jonathan Wakely <jwakely@redhat.com> + + Backport from mainline + 2017-03-17 Jonathan Wakely <jwakely@redhat.com> + + * src/c++11/codecvt.cc (range): Add non-type template parameter and + define oerloaded operators for reading and writing code units. + (range<Elem, false>): Define partial specialization for accessing + wide characters in potentially unaligned byte ranges. + (ucs2_span(const char16_t*, const char16_t*, ...)) + (ucs4_span(const char16_t*, const char16_t*, ...)): Change parameters + to range<const char16_t, false> in order to avoid unaligned reads. + (__codecvt_utf16_base<char16_t>::do_out) + (__codecvt_utf16_base<char32_t>::do_out) + (__codecvt_utf16_base<wchar_t>::do_out): Use range specialization for + unaligned data to avoid unaligned writes. + (__codecvt_utf16_base<char16_t>::do_in) + (__codecvt_utf16_base<char32_t>::do_in) + (__codecvt_utf16_base<wchar_t>::do_in): Likewise for writes. Return + error if there are unprocessable trailing bytes. + (__codecvt_utf16_base<char16_t>::do_length) + (__codecvt_utf16_base<char32_t>::do_length) + (__codecvt_utf16_base<wchar_t>::do_length): Pass arguments of type + range<const char16_t, false> to span functions. + * testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc: New test. + + Backport from mainline + 2017-03-16 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/79980 + * src/c++11/codecvt.cc (to_integer(codecvt_mode)): Fix target type. + + PR libstdc++/80041 + * src/c++11/codecvt.cc (__codecvt_utf16_base<wchar_t>::do_out) + (__codecvt_utf16_base<wchar_t>::do_in): Convert char arguments to + char16_t to work with UTF-16 instead of UTF-8. + * testsuite/22_locale/codecvt/codecvt_utf16/80041.cc: New test. + + * src/c++11/codecvt.cc (codecvt<char16_t, char, mbstate_t>) + (codecvt<char32_t, char, mbstate_t>, __codecvt_utf8_base<char16_t>) + (__codecvt_utf8_base<char32_t>, __codecvt_utf8_base<wchar_t>) + (__codecvt_utf16_base<char16_t>, __codecvt_utf16_base<char32_t>) + (__codecvt_utf16_base<wchar_t>, __codecvt_utf8_utf16_base<char16_t>) + (__codecvt_utf8_utf16_base<char32_t>) + (__codecvt_utf8_utf16_base<wchar_t>): Fix do_encoding() and + do_max_length() return values. + * testsuite/22_locale/codecvt/codecvt_utf16/members.cc: New test. + * testsuite/22_locale/codecvt/codecvt_utf8/members.cc: New test. + * testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc: New test. + + PR libstdc++/79980 + * include/bits/locale_conv.h (__do_str_codecvt): Set __count on + error path. + * src/c++11/codecvt.cc (operator&=, operator|=, operator~): Overloads + for manipulating codecvt_mode values. + (read_utf16_bom): Compare input to BOM constants instead of integral + constants that depend on endianness. Take mode parameter by + reference and adjust it, to distinguish between no BOM present and + UTF-16BE BOM present. + (ucs4_in, ucs2_span, ucs4_span): Adjust calls to read_utf16_bom. + (surrogates): New enumeration type. + (utf16_in, utf16_out): Add surrogates parameter to choose between + UTF-16 and UCS2 behaviour. + (utf16_span, ucs2_span): Use std::min not std::max. + (ucs2_out): Use std::min not std::max. Disallow surrogate pairs. + (ucs2_in): Likewise. Adjust calls to read_utf16_bom. + * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: New test. + * testsuite/22_locale/codecvt/codecvt_utf8/79980.cc: New test. + + PR libstdc++/79511 + * src/c++11/codecvt.cc (write_utf16_code_point): Don't write 0xffff + as a surrogate pair. + (__codecvt_utf8_utf16_base<char32_t>::do_in): Use native endianness + for internal representation. + (__codecvt_utf8_utf16_base<wchar_t>::do_in): Likewise. + * testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc: New test. + +2017-03-14 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/17_intro/names.cc: Undefine macros that clash with + identifiers in AIX system headers. + +2017-03-13 Ville Voutilainen <ville.voutilainen@gmail.com> + + PR libstdc++/80034 + * include/bits/list.tcc (merge(list&&)): Use const for the size_t + in the function and in the catch-block, qualify uses of std::distance. + (merge(list&&, _StrictWeakOrdering)): Likewise. + * testsuite/23_containers/list/operations/80034.cc: New. + +2017-03-02 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/79789 + * include/bits/ios_base.h (make_error_code, make_error_condition): + Likewise. + * include/bits/mask_array.h (mask_array): Likewise. + * include/bits/regex.h (regex_token_iterator): Likewise. + * include/bits/slice_array.h (slice_array): Likewise. + * include/std/memory (undeclare_no_pointers): Likewise. + * testsuite/17_intro/names.cc: New test. + +2017-02-14 Jonathan Wakely <jwakely@redhat.com> + + Backport from mainline + 2017-01-20 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/69321 + * include/experimental/any (__any_caster): Avoid instantiating + manager function for types that can't be stored in any. + * testsuite/experimental/any/misc/any_cast.cc: Test non-copyable type. + * testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error. + + Backport from mainline + 2017-01-18 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/69301 + * include/std/atomic (atomic<T>::load, atomic<T>::exchange): Use + aligned buffer instead of default-initialized variable. + * testsuite/29_atomics/atomic/69301.cc: New test. + * include/ext/pointer.h (_Pointer_adapter::operator++(int)) + (_Pointer_adapter::operator--(int)): Likewise. + + Backport from mainline + 2017-01-16 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/78702 + * include/bits/locale_classes.h (locale::facet::__shim): Change from + private to protected. + * src/c++11/cxx11-shim_facets.cc (__shim_accessor): Define helper to + make locale::facet::__shim accessible. + + Backport from mainline + 2017-01-11 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/78134 + * include/bits/stl_map.h (map::lower_bound, map::upper_bound) + (map::equal_range): Fix return type of heterogeneous overloads. + * include/bits/stl_multimap.h (multimap::lower_bound) + (multimap::upper_bound, multimap::equal_range): Likewise. + * include/bits/stl_multiset.h (multiset::lower_bound) + (multiset::upper_bound, multiset::equal_range): Likewise. + * include/bits/stl_set.h (set::lower_bound, set::upper_bound) + (set::equal_range): Likewise. + * testsuite/23_containers/map/operations/2.cc: Check return types. + * testsuite/23_containers/multimap/operations/2.cc: Likewise. + * testsuite/23_containers/multiset/operations/2.cc: Likewise. + * testsuite/23_containers/set/operations/2.cc: Likewise. + + Backport from mainline + 2017-01-11 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/78273 + * include/bits/stl_map.h (map::count<_Kt>(const _Kt&)): Don't assume + the heterogeneous comparison can only find one match. + * include/bits/stl_set.h (set::count<_Kt>(const _Kt&)): Likewise. + * testsuite/23_containers/map/operations/2.cc: Test count works with + comparison function that just partitions rather than sorting. + * testsuite/23_containers/set/operations/2.cc: Likewise. + 2017-02-01 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/78346 |