0b3ec8f48f
In order for std::less<T*> etc. to meet the total order requirements of [comparisons] p2 we need to cast unrelated pointers to uintptr_t before comparing them. Those casts aren't allowed in constant expressions, so only cast when __builtin_constant_p says the result of the comparison is not a compile-time constant (because the arguments are not constants, or the result of the comparison is unspecified). When the result is constant just compare the pointers directly without casting. This ensures that the function can be called in constant expressions with suitable arguments, but still yields a total order even for otherwise unspecified pointer comparisons. For std::less<void> etc. add new overloads for pointers, which use std::less<common_type_t<T*,U*>> directly. Also change the generic overloads to detect when the comparison would call a built-in relational operator with pointer operands, and dispatch that case to the corresponding specialization for void pointers. PR libstdc++/78420 * include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>) (greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations to ensure total order for pointers. (greater<void>, less<void>, greater_equal<void>, less_equal<void>): Add operator() overloads for pointer arguments and make generic overloads dispatch to new _S_cmp functions when comparisons would use built-in operators for pointers. * testsuite/20_util/function_objects/comparisons_pointer.cc: New. From-SVN: r258540
405 lines
16 KiB
Plaintext
405 lines
16 KiB
Plaintext
2018-03-14 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/78420
|
||
* include/bits/stl_function.h (greater<_Tp*>, less<_Tp*>)
|
||
(greater_equal<_Tp*>, less_equal<_Tp>*): Add partial specializations
|
||
to ensure total order for pointers.
|
||
(greater<void>, less<void>, greater_equal<void>, less_equal<void>):
|
||
Add operator() overloads for pointer arguments and make generic
|
||
overloads dispatch to new _S_cmp functions when comparisons would
|
||
use built-in operators for pointers.
|
||
* testsuite/20_util/function_objects/comparisons_pointer.cc: New.
|
||
|
||
2018-03-12 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/84773
|
||
PR libstdc++/83662
|
||
* crossconfig.m4: Check for aligned_alloc etc. on freebsd and mingw32.
|
||
* configure: Regenerate.
|
||
* include/c_global/cstdlib [_GLIBCXX_HAVE_ALIGNED_ALLOC]
|
||
(aligned_alloc): Add using-declaration.
|
||
* testsuite/18_support/aligned_alloc/aligned_alloc.cc: New test.
|
||
|
||
2018-03-09 François Dumont <fdumont@gcc.gnu.org>
|
||
|
||
* python/libstdcxx/v6/printers.py (build_libstdcxx_dictionary):
|
||
Fix std::_Fwd_list_iterator and std::_Fwd_list_const_iterator printers
|
||
registration.
|
||
|
||
2018-03-09 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/84769
|
||
* include/std/variant (get<_Tp, _Types...>, get_if<_Tp, _Types...>):
|
||
Qualify calls to get<_Np, Types...> and get_if<_Np, _Types...>.
|
||
|
||
src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
|
||
src/filesystem/std-ops.cc (create_dir): Likewise.
|
||
|
||
2018-03-08 François Dumont <fdumont@gcc.gnu.org>
|
||
|
||
* python/libstdcxx/v6/printers.py (NodeIteratorPrinter): New.
|
||
(StdListIteratorPrinter): Inherit from latter.
|
||
(StdFwdListIteratorPrinter): New, inherit from latter.
|
||
(StdDebugIteratorPrinter.to_string): Use non-debug iterator printer
|
||
when iterator has no associated container.
|
||
(build_libstdcxx_dictionary): Add __gnu_cxx::_Fwd_list_iterator and
|
||
__gnu_cxx::_Fwd_list_const_iterator printers. Remove __norm namespace
|
||
registrations.
|
||
* testsuite/libstdc++-prettyprinters/debug.cc: Adapt.
|
||
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Adapt.
|
||
|
||
2018-03-06 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||
|
||
PR libstdc++/84601
|
||
* include/std/optional (_Optional_payload): Split into multiple
|
||
specializations that can handle different cases of trivial or
|
||
non-trivial assignment operators.
|
||
* testsuite/20_util/optional/84601.cc: New.
|
||
* testsuite/20_util/optional/cons/value_neg.cc: Adjust.
|
||
|
||
2018-03-02 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/84671
|
||
* include/bits/parse_numbers.h (_Number_help): Add partial
|
||
specialization to handle digit separators. Adjust partial
|
||
specialization for recursion temrination to require _Pow == 1ULL.
|
||
* testsuite/20_util/duration/literals/84671.cc: New
|
||
|
||
2018-02-27 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||
|
||
Implement the missing bits of LWG 2769
|
||
* include/std/any (any_cast(const any&)): Add static_assert.
|
||
(any_cast(any&)): Likewise.
|
||
(any_cast(any&&)): Likewise, and remove the handling
|
||
for copyable-but-not-movable type.
|
||
* testsuite/20_util/any/misc/any_cast.cc: Adjust.
|
||
* testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
|
||
add new tests.
|
||
|
||
2018-02-23 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/84532
|
||
* include/std/thread (thread::__make_invoker): Construct tuple
|
||
directly instead of using make_tuple.
|
||
* testsuite/30_threads/async/84532.cc: New.
|
||
* testsuite/30_threads/thread/84532.cc: New.
|
||
|
||
2018-02-20 François Dumont <fdumont@gcc.gnu.org>
|
||
|
||
* include/ext/aligned_buffer.h [_GLIBCXX_INLINE_VERSION]
|
||
(template<> __aligned_buffer): Define as __aligned_membuf alias.
|
||
|
||
2018-02-19 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
|
||
|
||
PR target/84148
|
||
* configure: Regenerate.
|
||
|
||
2018-02-15 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/81797
|
||
* configure.ac (INCLUDE_DIR_NOTPARALLEL): Define.
|
||
* configure: Regenerate.
|
||
* include/Makefile.am (INCLUDE_DIR_NOTPARALLEL): Add .NOTPARALLEL when
|
||
defined.
|
||
* include/Makefile.in: Regenerate.
|
||
|
||
2018-01-29 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/83833
|
||
* testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
|
||
Add -ffloat-store to options for m68k and ia32.
|
||
|
||
* doc/xml/faq.xml: Update copyright years.
|
||
* doc/html/*: Regenerate.
|
||
|
||
PR libstdc++/83658
|
||
* include/std/any (any::__do_emplace): Only set _M_manager after
|
||
constructing the contained object.
|
||
* testsuite/20_util/any/misc/any_cast_neg.cc: Adjust dg-error line.
|
||
* testsuite/20_util/any/modifiers/83658.cc: New test.
|
||
|
||
2018-01-25 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/81076
|
||
* include/c_global/cstddef (__byte_operand): Define primary template.
|
||
* testsuite/18_support/byte/81076.cc: New test.
|
||
|
||
2018-01-19 Christophe Lyon <christophe.lyon@linaro.org>
|
||
|
||
* testsuite/ext/special_functions/airy_ai/check_nan.cc: Fix
|
||
dg-options and dg-add-options order.
|
||
* testsuite/ext/special_functions/airy_bi/check_nan.cc: Likewise.
|
||
* testsuite/ext/special_functions/conf_hyperg/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/ext/special_functions/hyperg/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/01_assoc_laguerre/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/02_assoc_legendre/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/03_beta/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/04_comp_ellint_1/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/05_comp_ellint_2/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/06_comp_ellint_3/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/06_comp_ellint_3/pr66689.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/07_cyl_bessel_i/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/08_cyl_bessel_j/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/09_cyl_bessel_k/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/10_cyl_neumann/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/11_ellint_1/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/12_ellint_2/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/13_ellint_3/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/13_ellint_3/pr66689.cc: Likewise.
|
||
* testsuite/special_functions/14_expint/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/15_hermite/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/16_laguerre/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/17_legendre/check_nan.cc: Likewise.
|
||
* testsuite/special_functions/18_riemann_zeta/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/19_sph_bessel/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/20_sph_legendre/check_nan.cc:
|
||
Likewise.
|
||
* testsuite/special_functions/21_sph_neumann/check_nan.cc:
|
||
Likewise.
|
||
|
||
2018-01-18 Uros Bizjak <ubizjak@gmail.com>
|
||
|
||
* configure.ac (AC_CHECK_HEADERS): Add linux/types.h. Conditionally
|
||
include linux/types.h when checking linux/random.h header.
|
||
* config.h.in: Regenerate.
|
||
* configure: Ditto.
|
||
* src/c++11/random.cc: Conditionally include linux/types.h.
|
||
|
||
2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
|
||
|
||
* testsuite/17_intro/names.cc: Undefine 'y' on SPARC/Linux.
|
||
|
||
2018-01-16 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/83834
|
||
* config/abi/pre/gnu.ver (GLIBCXX_3.4): Replace std::c[a-g]* wildcard
|
||
pattern with exact match for std::cerr.
|
||
|
||
2018-01-15 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/83833
|
||
* include/bits/random.h (chi_squared_distribution::param): Update
|
||
gamma distribution parameter.
|
||
* testsuite/26_numerics/random/chi_squared_distribution/83833.cc: New
|
||
test.
|
||
|
||
PR libstdc++/83830
|
||
* include/std/type_traits (has_unique_object_representations_v): Add
|
||
variable template.
|
||
* testsuite/20_util/has_unique_object_representations/value.cc: Check
|
||
variable template.
|
||
|
||
2018-01-15 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||
|
||
Make optional conditionally
|
||
trivially_{copy,move}_{constructible,assignable}
|
||
* include/std/optional (_Optional_payload): Fix the comment in
|
||
the class head and turn into a primary and one specialization.
|
||
(_Optional_payload::_M_engaged): Strike the NSDMI.
|
||
(_Optional_payload<_Tp, false>::operator=(const _Optional_payload&)):
|
||
New.
|
||
(_Optional_payload<_Tp, false>::operator=(_Optional_payload&&)):
|
||
Likewise.
|
||
(_Optional_payload<_Tp, false>::_M_get): Likewise.
|
||
(_Optional_payload<_Tp, false>::_M_reset): Likewise.
|
||
(_Optional_base_impl): Likewise.
|
||
(_Optional_base): Turn into a primary and three specializations.
|
||
(optional(nullopt)): Change the base init.
|
||
* testsuite/20_util/optional/assignment/8.cc: New.
|
||
* testsuite/20_util/optional/cons/trivial.cc: Likewise.
|
||
* testsuite/20_util/optional/cons/value_neg.cc: Adjust.
|
||
|
||
2018-01-15 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/80276
|
||
* python/libstdcxx/v6/printers.py (strip_inline_namespaces): New.
|
||
(get_template_arg_list): New.
|
||
(StdVariantPrinter._template_args): Remove, use get_template_arg_list
|
||
instead.
|
||
(TemplateTypePrinter): Rewrite to work with gdb.Type objects instead
|
||
of strings and regular expressions.
|
||
(add_one_template_type_printer): Adapt to new TemplateTypePrinter.
|
||
(FilteringTypePrinter): Add docstring. Match using startswith. Use
|
||
strip_inline_namespaces instead of strip_versioned_namespace.
|
||
(add_one_type_printer): Prepend namespace to match argument.
|
||
(register_type_printers): Add type printers for char16_t and char32_t
|
||
string types and for types using cxx11 ABI. Update calls to
|
||
add_one_template_type_printer to provide default argument dicts.
|
||
* testsuite/libstdc++-prettyprinters/80276.cc: New test.
|
||
* testsuite/libstdc++-prettyprinters/whatis.cc: Remove tests for
|
||
basic_string<unsigned char> and basic_string<signed char>.
|
||
* testsuite/libstdc++-prettyprinters/whatis2.cc: Duplicate whatis.cc
|
||
to test local variables, without overriding _GLIBCXX_USE_CXX11_ABI.
|
||
|
||
2018-01-14 Andreas Schwab <schwab@linux-m68k.org>
|
||
|
||
PR libstdc++/81092
|
||
* config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Update.
|
||
|
||
2018-01-13 Tim Shen <timshen@google.com>
|
||
|
||
PR libstdc++/83601
|
||
* include/bits/regex.tcc (regex_replace): Fix escaping in sed.
|
||
* testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc: Tests.
|
||
* testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc: Tests.
|
||
|
||
2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||
|
||
PR libstdc++/64054
|
||
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
|
||
Remove dg-xfail-run-if.
|
||
|
||
2018-01-10 François Dumont <fdumont@gcc.gnu.org>
|
||
|
||
* include/bits/forward_list.h
|
||
(_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
|
||
(_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
|
||
(_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
|
||
(_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
|
||
(_Fwd_list_impl()): Add noexcept qualification.
|
||
(_Fwd_list_impl(const _Node_alloc_type&)): Delete.
|
||
(_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
|
||
(_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
|
||
(_Fwd_list_base()): Default.
|
||
(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
|
||
(_Fwd_list_base(_Fwd_list_base&&)): Default.
|
||
(forward_list<>()): Default.
|
||
(forward_list<>(forward_list&&)): Default.
|
||
(forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
|
||
(forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
|
||
(forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
|
||
* include/bits/forward_list.tcc
|
||
(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
|
||
_M_impl._M_head move assignment.
|
||
(forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
|
||
* testsuite/23_containers/forward_list/allocator/default_init.cc: New.
|
||
|
||
2018-01-09 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/80276
|
||
* python/libstdcxx/v6/printers.py (SharedPointerPrinter)
|
||
(UniquePointerPrinter): Print correct template argument, not type of
|
||
the pointer.
|
||
(TemplateTypePrinter._recognizer.recognize): Handle failure to lookup
|
||
a type.
|
||
* testsuite/libstdc++-prettyprinters/cxx11.cc: Test unique_ptr of
|
||
array type.
|
||
* testsuite/libstdc++-prettyprinters/cxx17.cc: Test shared_ptr and
|
||
weak_ptr of array types.
|
||
|
||
2018-01-09 François Dumont <fdumont@gcc.gnu.org>
|
||
|
||
PR libstdc++/83709
|
||
* include/bits/hashtable_policy.h
|
||
(__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
|
||
__first != __last.
|
||
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
|
||
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
|
||
Add false_type parameter.
|
||
(_Insert_base::insert): Adapt.
|
||
* include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
|
||
Adapt.
|
||
(_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
|
||
Add __n_elt parameter, defaulted to 1.
|
||
(_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
|
||
policy _M_need_rehash.
|
||
(_Hashtable::_M_merge_unique): Pass target number of elements to add to
|
||
produce only 1 rehash if necessary.
|
||
* testsuite/23_containers/unordered_map/insert/83709.cc: New.
|
||
* testsuite/23_containers/unordered_set/insert/83709.cc: New.
|
||
|
||
2018-01-09 Juraj Oršulić <juraj.orsulic@fer.hr>
|
||
Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/59253 (partial)
|
||
* python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
|
||
type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
|
||
(SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
|
||
children.
|
||
* testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
|
||
of unique_ptr printer.
|
||
* testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
|
||
output of shared_ptr printer.
|
||
|
||
2018-01-05 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/83626
|
||
* src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
|
||
unnecessary symlink_status call.
|
||
(remove_all(const path&, error_code&)): Use filesystem::remove.
|
||
* src/filesystem/std-ops.cc: Likewise.
|
||
|
||
PR libstdc++/83279
|
||
* src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
|
||
sendfile.
|
||
|
||
PR libstdc++/83626
|
||
* src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
|
||
report an error for ENOENT.
|
||
(remove_all(const path&)): Fix type of result variable.
|
||
(remove_all(const path&, error_code&)): Use non-throwing increment
|
||
for directory iterator. Call POSIX remove directly to avoid redundant
|
||
calls to symlink_status. Do not report errors for ENOENT.
|
||
* src/filesystem/std-ops.cc: Likewise.
|
||
* testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
|
||
overload.
|
||
* testsuite/experimental/filesystem/operations/remove_all.cc:
|
||
Likewise.
|
||
|
||
2018-01-04 Jonathan Wakely <jwakely@redhat.com>
|
||
|
||
PR libstdc++/83626
|
||
* src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
|
||
redundant call to ec.clear().
|
||
(remove_all(const path&, error_code&))): Do not return an error for
|
||
non-existent paths.
|
||
* src/filesystem/std-ops.cc: Likewise.
|
||
* testsuite/27_io/filesystem/operations/remove.cc: New test.
|
||
* testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
|
||
results for non-existent paths.
|
||
* testsuite/experimental/filesystem/operations/remove.cc: New test.
|
||
* testsuite/experimental/filesystem/operations/remove_all.cc: Fix
|
||
expected results for non-existent paths.
|
||
|
||
* include/bits/fs_ops.h (exists(const path&, error_code&))): Only
|
||
check status_known once.
|
||
* include/experimental/bits/fs_ops.h: Likewise.
|
||
|
||
PR libstdc++/83607
|
||
* include/std/functional (__is_byte_like): New trait.
|
||
(__is_std_equal_to): Remove.
|
||
(__boyer_moore_base_t): Use __is_byte_like instead of
|
||
__is_std_equal_to.
|
||
* include/experimental/functional (__is_std_equal_to): Remove.
|
||
(__boyer_moore_base_t): Use __is_byte_like instead of
|
||
__is_std_equal_to.
|
||
* testsuite/20_util/function_objects/83607.cc: New test.
|
||
|
||
2018-01-03 Ville Voutilainen <ville.voutilainen@gmail.com>
|
||
|
||
Protect optional's deduction guide with the feature macro
|
||
* include/std/optional: Use the feature macro.
|
||
|
||
2018-01-03 Jakub Jelinek <jakub@redhat.com>
|
||
|
||
Update copyright years.
|
||
|
||
Copyright (C) 2018 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|