aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
AgeCommit message (Collapse)AuthorFilesLines
2022-10-11Daily bump.GCC Administrator1-0/+29
2022-10-10libstdc++: Revert addition of constraints to make_signed/make_unsignedJonathan Wakely6-12/+19
Constraining the primary template makes it unusable in uninstantiated contexts. libstdc++-v3/ChangeLog: * include/std/type_traits (make_signed, make_unsigned): Remove constraints on primary template. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Undo changes to expected error in C++20 mode. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc: Likewise. * testsuite/20_util/make_signed/requirements/uninstantiated.cc: New test. * testsuite/20_util/make_unsigned/requirements/uninstantiated.cc: New test.
2022-10-10libstdc++: std::make_signed_t<cv bool> should be ill-formedJonathan Wakely5-34/+40
Currently we only reject std::make_signed_t<bool> but not cv bool. Similarly for std::make_unsigned_t<cv bool>. As well as making those ill-formed, this adds a requires-clause to the make_signed and make_unsigned primary templates. This makes non-integral, non-enum cases fail immediately with a clear error, rather than giving an error about __make_signed_selector<T, false, false> being incomplete. libstdc++-v3/ChangeLog: * include/std/type_traits (make_signed, make_unsigned): Add specializations for cv bool. Add requires-clause for C++20 to improve diagnostics for non-integral, non-enum cases. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Check cv bool. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Likewise. * testsuite/24_iterators/range_access/range_access_cpp20_neg.cc: Adjust expected errors for C++20 and later. * testsuite/lib/prune.exp: Prune "in requirements [with ...]" lines from diagnostics.
2022-10-08Daily bump.GCC Administrator1-0/+18
2022-10-07libstdc++: Add --disable-libstdcxx-hosted as an alias for hosted-libstdcxxJonathan Wakely2-10/+49
Most libstdc++ configure args are of the form --enable-libstdcxx-xxx but the option to build freestanding is --disable-hosted-libstdcxx. If you accidentally type --disable-libstdcxx-hosted then it will be ignored. This adds --disable-libstdcxx-hosted as an alias for the existing arg, so it works whichever way you say it. If both args are used explicitly and their values do not agree, configure fails with an error. libstdc++-v3/ChangeLog: * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Add libstdcxx-hosted enable arg as an alias for hosted-libstdcxx enable arg. * configure: Regenerate.
2022-10-07libstdc++: Shuffle header dependencies of <functional>Jonathan Wakely2-9/+8
The <new> header is needed by std::function to use placement new, so include it in <bits/std_function.h> instead of in <functional>. libstdc++-v3/ChangeLog: * include/bits/std_function.h: Include <new> but do not include <bits/stl_function.h>. * include/std/functional: Do not include <new>.
2022-10-07libstdc++: Use bold style for DR titles in the manualJonathan Wakely2-397/+390
This matches how the issues are styled in the LWG issues list, and also allows us to use italics for "cv" (e.g. in issue 2487). libstdc++-v3/ChangeLog: * doc/xml/manual/intro.xml: Add role="bold" attribute to emphasis elements for issue titles. * doc/html/manual/bugs.html: Regenerate.
2022-10-06Daily bump.GCC Administrator1-0/+10
2022-10-05libtdc++: Regenerate Makefile.in after freestanding header changesJonathan Wakely1-52/+49
libstdc++-v3/ChangeLog: * include/Makefile.in: Regenerate.
2022-10-05libstdc++: Guard use of new built-in with __has_builtinJonathan Wakely1-0/+2
Another case where I forgot that non-GCC compilers don't have this built-in yet. libstdc++-v3/ChangeLog: * include/bits/invoke.h (__invoke_r): Check __has_builtin(__reference_converts_from_temporary) before using built-in.
2022-10-05Daily bump.GCC Administrator1-0/+74
2022-10-04libstdc++: Fix test FAIL for old std::string ABIJonathan Wakely1-3/+9
libstdc++-v3/ChangeLog: * testsuite/std/ranges/adaptors/join_with/1.cc: Remove unused <sstream header. (test04): Remove constexpr for old std::string ABI and test at runtime.
2022-10-04libstdc++: Use new built-ins __remove_cv, __remove_reference etc.Jonathan Wakely1-9/+24
libstdc++-v3/ChangeLog: * include/std/type_traits (remove_cv): Use __remove_cv built-in. (remove_reference): Use __remove_reference built-in. (remove_cvref): Use __remove_cvref built-in. Remove inheritance for fallback implementation.
2022-10-04libstdc++: Refactor seed sequence constraints in <random>Jonathan Wakely2-18/+27
Every use of _If_seed_seq in <random> and <ext/random> uses it with enable_if. We can just move the enable_if into the helper alias instead of repeating it everywhere. libstdc++-v3/ChangeLog: * include/bits/random.h (__is_seed_seq): Replace with ... (_If_seed_seq_for): ... this. * include/ext/random: Adjust to use _If_seed_seq_for.
2022-10-04libstdc++: Avoid heavyweight std::visit in ranges::join_with_viewPatrick Palka1-11/+36
libstdc++-v3/ChangeLog: * include/std/ranges (join_with_view::_Iterator::operator*): Replace use of std::visit with manual visitation. (join_with_view::_Iterator::operator++): Likewise. (join_with_view::_Iterator::operator--): Likewise. (join_with_view::_Iterator::iter_move): Likewise. (join_with_view::_Iterator::iter_swap): Likewise.
2022-10-04libstdc++: Disable test for freestandingJonathan Wakely1-0/+2
This test checks the exception-safety of std::stable_sort if copying a value throws. For freestanding we don't allocate in std::stable_sort anyway, and the exception thrown via __throw_runtime_error terminates, so disable the test. libstdc++-v3/ChangeLog: * testsuite/25_algorithms/stable_sort/mem_check.cc: Do nto run for freestanding.
2022-10-04libstdc++: Enable std::hash<coroutine_handle<P>> [PR107139]Jonathan Wakely1-8/+2
Everything that <coroutine> depends on is available for freestanding now. libstdc++-v3/ChangeLog: PR libstdc++/107139 * include/std/coroutine: Remove all _GLIBCXXHOSTED preprocessor conditionals.
2022-10-04libstdc++: Make <cstdint> work freestanding [PR107134]Jonathan Wakely1-2/+57
When gcc/config.gcc defines use_gcc_stdin=wrap, GCC's <stdint.h> tries to use libc's <stdint.h> unless -ffreestanding is used. When libstdc++ is configured --disable-hosted-libstdcxx we want <cstdint> to work even without -ffreestanding being given. This is a kluge to make it include GCC's <stdint-gcc.h> directly even without -ffreestanding. libstdc++-v3/ChangeLog: PR libstdc++/107134 * include/c_global/cstdint [!_GLIBCXX_HOSTED]: Include <stdint-gcc.h> directly.
2022-10-04libstdc++: Define <bits/functexcept.h> functions for freestanding [PR107135]Jonathan Wakely2-7/+26
We don't compile src/c++11/functexcept.cc for freestanding, so just define the functions used by freestanding entities as inline calls to std::terminate. libstdc++-v3/ChangeLog: PR libstdc++/107135 * include/bits/functexcept.h [!_GLIBCXX_HOSTED] (__throw_invalid_argument, __throw_out_of_range) (__throw_out_of_range_fmt, __throw_runtime_error) (__throw_overflow_error): Define inline. * include/std/bitset (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]: Replace __builtin_abort with __throw_invalid_argument.
2022-10-04libstdc++: Implement ranges::join_with_view from P2441R2Patrick Palka2-0/+555
libstdc++-v3/ChangeLog: * include/std/ranges: Include <variant> for C++23. (__detail::__compatible_joinable_ranges): Define. (__detail::__bidirectional_common): Define. (join_with_view): Define. (join_with_view::_Iterator): Define. (join_with_view::_Sentinel): Define. (views::__detail::__can_join_with_view): Define. (views::_JoinWith, views::join_with): Define. * testsuite/std/ranges/adaptors/join_with/1.cc: New test.
2022-10-04libstdc++: Use ///< for inline documentationArsen Arsenović3-14/+14
I noticed that some variables were misdocumented when using trailing comment for documentation. I ran a search with a relatively simple regex[1] to look for any ///s following some code that did not have a <, and came up with these instances only. [1]: \s*([^ ]+\s*)+///[^<].*$ libstdc++-v3/ChangeLog: * include/std/iostream: Use ///< for inline documentation. * include/std/limits: Likewise. * include/experimental/internet: Likewise.
2022-10-04Daily bump.GCC Administrator1-0/+666
2022-10-03libstdc++: Update status docs for compare_exchange padding bitsJonathan Wakely2-6/+18
libstdc++-v3/ChangeLog: * doc/xml/manual/status_cxx2020.xml: Update C++20 status. * doc/html/manual/status.html: Regenerate.
2022-10-03libstdc++: Disable hosted-only tests [PR103626]Arsen Arsenović290-10/+390
PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding libstdc++-v3/ChangeLog: PR libstdc++/103626 * testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc: Require ET hosted. * testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise. * testsuite/18_support/new_nothrow.cc: Likewise. * testsuite/20_util/allocator/105975.cc: Likewise. * testsuite/20_util/allocator/14176.cc: Likewise. * testsuite/20_util/allocator/64135.cc: Likewise. * testsuite/20_util/allocator/89510.cc: Likewise. * testsuite/20_util/allocator/lwg3190.cc: Likewise. * testsuite/20_util/allocator/overaligned.cc: Likewise. * testsuite/20_util/allocator/rebind_c++20.cc: Likewise. * testsuite/20_util/allocator/requirements/constexpr.cc: Likewise. * testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/20_util/allocator/requirements/typedefs.cc: Likewise. * testsuite/20_util/allocator/requirements/typedefs_c++20.cc: Likewise. * testsuite/20_util/allocator/void.cc: Likewise. * testsuite/20_util/allocator_traits/header-2.cc: Likewise. * testsuite/20_util/allocator_traits/header.cc: Likewise. * testsuite/20_util/allocator_traits/members/92878_92947.cc: Likewise. * testsuite/20_util/allocator_traits/members/pointers.cc: Likewise. * testsuite/20_util/allocator_traits/requirements/typedefs.cc: Likewise. * testsuite/20_util/bad_function_call/cons_virtual_derivation.cc: Likewise. * testsuite/20_util/bind/42593.cc: Likewise. * testsuite/20_util/bitset/access/dr396.cc: Likewise. * testsuite/20_util/bitset/access/to_string.cc: Likewise. * testsuite/20_util/bitset/cons/16020.cc: Likewise. * testsuite/20_util/bitset/cons/dr1325-2.cc: Likewise. * testsuite/20_util/bitset/cons/dr396.cc: Likewise. * testsuite/20_util/bitset/debug/invalidation/1.cc: Likewise. * testsuite/20_util/bitset/ext/15361.cc: Likewise. * testsuite/20_util/bitset/operations/13838.cc: Likewise. * testsuite/20_util/bitset/operations/96303.cc: Likewise. * testsuite/20_util/bitset/version.cc: Likewise. * testsuite/20_util/enable_shared_from_this/56383.cc: Likewise. * testsuite/20_util/enable_shared_from_this/89303.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/assign.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/const.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/reinit.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc: Likewise. * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: Likewise. * testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/forward/1.cc: Likewise. * testsuite/20_util/forward/1_neg.cc: Likewise. * testsuite/20_util/function/1.cc: Likewise. * testsuite/20_util/function/10.cc: Likewise. * testsuite/20_util/function/2.cc: Likewise. * testsuite/20_util/function/3.cc: Likewise. * testsuite/20_util/function/4.cc: Likewise. * testsuite/20_util/function/43397.cc: Likewise. * testsuite/20_util/function/48541.cc: Likewise. * testsuite/20_util/function/5.cc: Likewise. * testsuite/20_util/function/58569.cc: Likewise. * testsuite/20_util/function/6.cc: Likewise. * testsuite/20_util/function/60594.cc: Likewise. * testsuite/20_util/function/65760.cc: Likewise. * testsuite/20_util/function/69222.cc: Likewise. * testsuite/20_util/function/7.cc: Likewise. * testsuite/20_util/function/77322.cc: Likewise. * testsuite/20_util/function/8.cc: Likewise. * testsuite/20_util/function/9.cc: Likewise. * testsuite/20_util/function/91456.cc: Likewise. * testsuite/20_util/function/assign/move.cc: Likewise. * testsuite/20_util/function/assign/move_target.cc: Likewise. * testsuite/20_util/function/cmp/cmp_neg.cc: Likewise. * testsuite/20_util/function/cons/55320.cc: Likewise. * testsuite/20_util/function/cons/57465.cc: Likewise. * testsuite/20_util/function/cons/72820.cc: Likewise. * testsuite/20_util/function/cons/addressof.cc: Likewise. * testsuite/20_util/function/cons/callable.cc: Likewise. * testsuite/20_util/function/cons/deduction.cc: Likewise. * testsuite/20_util/function/cons/lwg2774.cc: Likewise. * testsuite/20_util/function/cons/move.cc: Likewise. * testsuite/20_util/function/cons/move_target.cc: Likewise. * testsuite/20_util/function/cons/noexcept.cc: Likewise. * testsuite/20_util/function/cons/non_copyconstructible.cc: Likewise. * testsuite/20_util/function/cons/refqual.cc: Likewise. * testsuite/20_util/function/cons/70692.cc: Likewise. * testsuite/20_util/function/cons/deduction_c++23.cc: Likewise. * testsuite/20_util/function/invoke/forwarding.cc: Likewise. * testsuite/20_util/function/invoke/move_only.cc: Likewise. * testsuite/20_util/function/null_pointer_comparisons.cc: Likewise. * testsuite/20_util/function/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/function/target_no_rtti.cc: Likewise. * testsuite/20_util/function_objects/83607.cc: Likewise. * testsuite/20_util/function_objects/mem_fn/adl.cc: Likewise. * testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise. * testsuite/20_util/headers/functional/types_std_c++0x.cc: Likewise. * testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise. * testsuite/20_util/is_function/35637.cc: Likewise. * testsuite/20_util/move/1.cc: Likewise. * testsuite/20_util/move_only_function/call.cc: Likewise. * testsuite/20_util/move_only_function/cons.cc: Likewise. * testsuite/20_util/move_only_function/move.cc: Likewise. * testsuite/20_util/move_only_function/version.cc: Likewise. * testsuite/20_util/owner_less/cmp.cc: Likewise. * testsuite/20_util/owner_less/noexcept.cc: Likewise. * testsuite/20_util/owner_less/void.cc: Likewise. * testsuite/20_util/pointer_safety/1.cc: Likewise. * testsuite/20_util/scoped_allocator/65279.cc: Likewise. * testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise. * testsuite/20_util/scoped_allocator/construct_pair.cc: Likewise. * testsuite/20_util/scoped_allocator/dr2586.cc: Likewise. * testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc: Likewise. * testsuite/20_util/shared_ptr/assign/assign.cc: Likewise. * testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise. * testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise. * testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc: Likewise. * testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise. * testsuite/20_util/shared_ptr/assign/move.cc: Likewise. * testsuite/20_util/shared_ptr/assign/sfinae.cc: Likewise. * testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise. * testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Likewise. * testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc: Likewise. * testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc: Likewise. * testsuite/20_util/shared_ptr/atomic/1.cc: Likewise. * testsuite/20_util/shared_ptr/atomic/2.cc: Likewise. * testsuite/20_util/shared_ptr/casts/1.cc: Likewise. * testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise. * testsuite/20_util/shared_ptr/casts/rval.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/86537.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/dr1401.cc: Likewise. * testsuite/20_util/shared_ptr/comparison/less.cc: Likewise. * testsuite/20_util/shared_ptr/cons/39405.cc: Likewise. * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise. * testsuite/20_util/shared_ptr/cons/46910.cc: Likewise. * testsuite/20_util/shared_ptr/cons/51365.cc: Likewise. * testsuite/20_util/shared_ptr/cons/52924.cc: Likewise. * testsuite/20_util/shared_ptr/cons/55123.cc: Likewise. * testsuite/20_util/shared_ptr/cons/58659.cc: Likewise. * testsuite/20_util/shared_ptr/cons/58839.cc: Likewise. * testsuite/20_util/shared_ptr/cons/61036.cc: Likewise. * testsuite/20_util/shared_ptr/cons/79467.cc: Likewise. * testsuite/20_util/shared_ptr/cons/80229.cc: Likewise. * testsuite/20_util/shared_ptr/cons/alias-rval.cc: Likewise. * testsuite/20_util/shared_ptr/cons/alias.cc: Likewise. * testsuite/20_util/shared_ptr/cons/array.cc: Likewise. * testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise. * testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise. * testsuite/20_util/shared_ptr/cons/copy.cc: Likewise. * testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise. * testsuite/20_util/shared_ptr/cons/default.cc: Likewise. * testsuite/20_util/shared_ptr/cons/lwg2802.cc: Likewise. * testsuite/20_util/shared_ptr/cons/lwg3548.cc: Likewise. * testsuite/20_util/shared_ptr/cons/move.cc: Likewise. * testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc: Likewise. * testsuite/20_util/shared_ptr/cons/nullptr.cc: Likewise. * testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc: Likewise. * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc: Likewise. * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise. * testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise. * testsuite/20_util/shared_ptr/creation/36949.cc: Likewise. * testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc: Likewise. * testsuite/20_util/shared_ptr/creation/58594.cc: Likewise. * testsuite/20_util/shared_ptr/creation/87278.cc: Likewise. * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise. * testsuite/20_util/shared_ptr/creation/99006.cc: Likewise. * testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise. * testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise. * testsuite/20_util/shared_ptr/creation/make.cc: Likewise. * testsuite/20_util/shared_ptr/creation/no_rtti.cc: Likewise. * testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise. * testsuite/20_util/shared_ptr/creation/private.cc: Likewise. * testsuite/20_util/shared_ptr/creation/single_allocation.cc: Likewise. * testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc: Likewise. * testsuite/20_util/shared_ptr/creation/version.cc: Likewise. * testsuite/20_util/shared_ptr/dest/dest.cc: Likewise. * testsuite/20_util/shared_ptr/hash/1.cc: Likewise. * testsuite/20_util/shared_ptr/misc/24595.cc: Likewise. * testsuite/20_util/shared_ptr/misc/42019.cc: Likewise. * testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise. * testsuite/20_util/shared_ptr/misc/swap.cc: Likewise. * testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise. * testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise. * testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc: Likewise. * testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise. * testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise. * testsuite/20_util/shared_ptr/observers/array.cc: Likewise. * testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise. * testsuite/20_util/shared_ptr/observers/get.cc: Likewise. * testsuite/20_util/shared_ptr/observers/owner_before.cc: Likewise. * testsuite/20_util/shared_ptr/observers/unique.cc: Likewise. * testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise. * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/20_util/shared_ptr/requirements/weak_type.cc: Likewise. * testsuite/20_util/specialized_algorithms/construct_at/95788.cc: Likewise. * testsuite/20_util/temporary_buffer.cc: Likewise. * testsuite/20_util/tuple/48476.cc: Likewise. * testsuite/20_util/tuple/cons/90700.cc: Likewise. * testsuite/20_util/tuple/cons/96803.cc: Likewise. * testsuite/20_util/tuple/cons/allocator_with_any.cc: Likewise. * testsuite/20_util/tuple/cons/allocators.cc: Likewise. * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise. * testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise. * testsuite/20_util/tuple/p2321r2.cc: Likewise. * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise. * testsuite/20_util/unique_ptr/creation/array.cc: Likewise. * testsuite/20_util/unique_ptr/creation/array_neg.cc: Likewise. * testsuite/20_util/unique_ptr/creation/constexpr.cc: Likewise. * testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Likewise. * testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc: Likewise. * testsuite/20_util/unique_ptr/creation/single.cc: Likewise. * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise. * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise. * testsuite/20_util/uses_allocator/uninitialized_construct.cc: Likewise. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise. * testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise. * testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc: Likewise. * testsuite/20_util/weak_ptr/lock/1.cc: Likewise. * testsuite/20_util/weak_ptr/observers/owner_before.cc: Likewise. * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc: Likewise. * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/21_strings/basic_string/version.cc: Likewise. * testsuite/21_strings/basic_string_view/operations/contains/char/2.cc: Likewise. * testsuite/21_strings/c_strings/char/69626.cc: Likewise. * testsuite/21_strings/char_traits/requirements/version.cc: Likewise. * testsuite/23_containers/vector/requirements/version.cc: Likewise. * testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/insert_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/istream_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc: Likewise. * testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc: Likewise. * testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc: Likewise. * testsuite/25_algorithms/constexpr_macro.cc: Likewise. * testsuite/25_algorithms/equal/constrained.cc: Likewise. * testsuite/25_algorithms/headers/cstdlib/functions_std.cc: Likewise. * testsuite/25_algorithms/inplace_merge/1.cc: Likewise. * testsuite/25_algorithms/lexicographical_compare/constrained.cc: Likewise. * testsuite/25_algorithms/make_heap/movable.cc: Likewise. * testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise. * testsuite/25_algorithms/random_shuffle/1.cc: Likewise. * testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise. * testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/sort/35588.cc: Likewise. * testsuite/25_algorithms/stable_partition/1.cc: Likewise. * testsuite/25_algorithms/stable_partition/constrained.cc: Likewise. * testsuite/25_algorithms/stable_partition/mem_check.cc: Likewise. * testsuite/25_algorithms/stable_partition/moveable.cc: Likewise. * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc: Likewise. * testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc: Likewise. * testsuite/25_algorithms/stable_sort/1.cc: Likewise. * testsuite/26_numerics/complex/2.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/60401.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/dr2192.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/dr2735.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/functions_std.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise. * testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise. * testsuite/26_numerics/lerp/version.cc: Likewise. * testsuite/26_numerics/midpoint/version.cc: Likewise. * testsuite/27_io/basic_syncbuf/2.cc: Likewise. * testsuite/27_io/basic_syncstream/2.cc: Likewise. * testsuite/27_io/fpos/14320-1.cc: Likewise. * testsuite/27_io/fpos/14320-2.cc: Likewise. * testsuite/27_io/fpos/14320-3.cc: Likewise. * testsuite/27_io/fpos/14320-4.cc: Likewise. * testsuite/27_io/spanstream/version.cc: Likewise. * testsuite/29_atomics/atomic/lwg3220.cc: Likewise. * testsuite/29_atomics/atomic/operators/51811.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/102994.cc: Likewise. * testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise. * testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise. * testsuite/30_threads/barrier/2.cc: Likewise. * testsuite/30_threads/condition_variable_any/stop_token/2.cc: Likewise. * testsuite/30_threads/jthread/version.cc: Likewise. * testsuite/30_threads/latch/2.cc: Likewise. * testsuite/30_threads/semaphore/2.cc: Likewise. * testsuite/30_threads/stop_token/2.cc: Likewise. * testsuite/abi/pr42230.cc: Likewise. * testsuite/ext/shared_ptr/1.cc: Likewise. * testsuite/libstdc++-xmethods/shared_ptr.cc: Likewise. * testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise. * testsuite/std/ranges/adaptors/p1739.cc: Likewise. * testsuite/std/ranges/iota/lwg3292_neg.cc: Likewise. * testsuite/std/ranges/p2325.cc: Likewise.
2022-10-03libstdc++: Enable std::bitset<N>::bitset(const char*) for freestandingJonathan Wakely1-12/+50
The std::bitset constructor from a character string is specified in terms of std::basic_string and std::char_traits, but doesn't need to be. This makes it available for freestanding. libstdc++-v3/ChangeLog: * include/std/bitset (bitset(const C*, size_type n, C, C)) [!_GLIBCXX_HOSTED]: Remove std::basic_string dependency. (_M_copy_from_ptr) [!_GLIBCXX_HOSTED]: Abort instead of throwing.
2022-10-03libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626]Arsen Arsenović3-4/+9
PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding libstdc++-v3/ChangeLog: PR libstdc++/103626 * include/std/bitset [!_GLIBCXX_HOSTED]: Re-enable std::hash. * testsuite/20_util/bitset/cons/constexpr_c++23.cc: Require ET hosted. * testsuite/20_util/bitset/ext/constexpr.cc: Likewise.
2022-10-03libstdc++: Add effective-target 'hosted' for testsuite [PR103626]Jonathan Wakely1-1/+9
PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding libstdc++-v3/ChangeLog: PR libstdc++/103626 * testsuite/lib/libstdc++.exp (check_effective_target_stacktrace): Also require hosted. (check_effective_target_hosted): New proc.
2022-10-03libstdc++: Make some tests work on freestanding [PR103626]Arsen Arsenović13-64/+104
PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding Co-authored-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: PR libstdc++/103626 * testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]: Do not include C headers that aren't valid for freestanding. * testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]: Do not test tag types that aren't defined for freestanding. * testsuite/18_support/headers/cstdlib/functions_std.cc: Do not check for std::getenv and std::system for freestanding. * testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]: Do not test hosted parts of the standard library. * testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]: Likewise. * testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]: Likewise. * testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise. * testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise. * testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise.
2022-10-03libstdc++: Rework how freestanding install works [PR106953]Arsen Arsenović2-479/+477
In light of there being far more freestanding headers now, ad-hoc maintenance of a subset of the install implementation has become unsustainable. Instead, we gate off a part of the normal install routine so that it works without HOSTED enabled, as well as subdivide lists of headers into freestanding and hosted components, according to the HOSTED flag. libstdc++-v3/ChangeLog: PR libstdc++/106953 * include/Makefile.am [!_GLIBCXX_HOSTED]: Remove install-freestanding-headers, unifying it with the usual install-headers * include/Makefile.in: Regenerate.
2022-10-03libstdc++: Mark headers that must be hosted as such [PR103626]Arsen Arsenović170-59/+428
PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding Co-authored-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: PR libstdc++/103626 * include/Makefile.am: Add new header. * include/Makefile.in: Regenerate. * include/bits/requires_hosted.h: New header. * include/experimental/algorithm: Include <bits/requires_hosted.h>. * include/experimental/any: Likewise. * include/experimental/array: Likewise. * include/experimental/buffer: Likewise. * include/experimental/chrono: Likewise. * include/experimental/deque: Likewise. * include/experimental/executor: Likewise. * include/experimental/filesystem: Likewise. * include/experimental/forward_list: Likewise. * include/experimental/functional: Likewise. * include/experimental/internet: Likewise. * include/experimental/io_context: Likewise. * include/experimental/iterator: Likewise. * include/experimental/list: Likewise. * include/experimental/map: Likewise. * include/experimental/memory: Likewise. * include/experimental/memory_resource: Likewise. * include/experimental/net: Likewise. * include/experimental/netfwd: Likewise. * include/experimental/numeric: Likewise. * include/experimental/optional: Likewise. * include/experimental/propagate_const: Likewise. * include/experimental/random: Likewise. * include/experimental/ratio: Likewise. * include/experimental/regex: Likewise. * include/experimental/scope: Likewise. * include/experimental/set: Likewise. * include/experimental/simd: Likewise. * include/experimental/socket: Likewise. * include/experimental/source_location: Likewise. * include/experimental/string: Likewise. * include/experimental/string_view: Likewise. * include/experimental/system_error: Likewise. * include/experimental/timer: Likewise. * include/experimental/tuple: Likewise. * include/experimental/unordered_map: Likewise. * include/experimental/unordered_set: Likewise. * include/experimental/utility: Likewise. * include/experimental/vector: Likewise. * include/std/barrier: Likewise. * include/std/chrono: Likewise. * include/std/condition_variable: Likewise. * include/std/deque: Likewise. * include/std/execution: Likewise. * include/std/filesystem: Likewise. * include/std/forward_list: Likewise. * include/std/fstream: Likewise. * include/std/future: Likewise. * include/std/iomanip: Likewise. * include/std/ios: Likewise. * include/std/iosfwd: Likewise. * include/std/iostream: Likewise. * include/std/istream: Likewise. * include/std/latch: Likewise. * include/std/list: Likewise. * include/std/locale: Likewise. * include/std/map: Likewise. * include/std/memory_resource: Likewise. * include/std/mutex: Likewise. * include/std/ostream: Likewise. * include/std/queue: Likewise. * include/std/random: Likewise. * include/std/regex: Likewise. * include/std/semaphore: Likewise. * include/std/set: Likewise. * include/std/shared_mutex: Likewise. * include/std/spanstream: Likewise. * include/std/sstream: Likewise. * include/std/stack: Likewise. * include/std/stacktrace: Likewise. * include/std/stop_token: Likewise. * include/std/streambuf: Likewise. * include/std/string: Likewise. * include/std/syncstream: Likewise. * include/std/system_error: Likewise. * include/std/thread: Likewise. * include/std/unordered_map: Likewise. * include/std/unordered_set: Likewise. * include/std/valarray: Likewise. * include/std/vector: Likewise. * include/tr1/array: Likewise. * include/tr1/ccomplex: Likewise. * include/tr1/cctype: Likewise. * include/tr1/cfenv: Likewise. * include/tr1/cfloat: Likewise. * include/tr1/cinttypes: Likewise. * include/tr1/climits: Likewise. * include/tr1/cmath: Likewise. * include/tr1/complex: Likewise. * include/tr1/complex.h: Likewise. * include/tr1/cstdarg: Likewise. * include/tr1/cstdbool: Likewise. * include/tr1/cstdint: Likewise. * include/tr1/cstdio: Likewise. * include/tr1/cstdlib: Likewise. * include/tr1/ctgmath: Likewise. * include/tr1/ctime: Likewise. * include/tr1/ctype.h: Likewise. * include/tr1/cwchar: Likewise. * include/tr1/cwctype: Likewise. * include/tr1/fenv.h: Likewise. * include/tr1/float.h: Likewise. * include/tr1/functional: Likewise. * include/tr1/inttypes.h: Likewise. * include/tr1/limits.h: Likewise. * include/tr1/math.h: Likewise. * include/tr1/memory: Likewise. * include/tr1/random: Likewise. * include/tr1/regex: Likewise. * include/tr1/stdarg.h: Likewise. * include/tr1/stdbool.h: Likewise. * include/tr1/stdint.h: Likewise. * include/tr1/stdio.h: Likewise. * include/tr1/stdlib.h: Likewise. * include/tr1/tgmath.h: Likewise. * include/tr1/tuple: Likewise. * include/tr1/type_traits: Likewise. * include/tr1/unordered_map: Likewise. * include/tr1/unordered_set: Likewise. * include/tr1/utility: Likewise. * include/tr1/wchar.h: Likewise. * include/tr1/wctype.h: Likewise. * include/c_global/cmath: Likewise. * include/ext/algorithm: Include <bits/requires_hosted.h>. * include/ext/bitmap_allocator.h: Likewise. * include/ext/cmath: Likewise. * include/ext/codecvt_specializations.h: Likewise. * include/ext/debug_allocator.h: Likewise. * include/ext/enc_filebuf.h: Likewise. * include/ext/extptr_allocator.h: Likewise. * include/ext/functional: Likewise. * include/ext/malloc_allocator.h: Likewise. * include/ext/memory: Likewise. * include/ext/mt_allocator.h: Likewise. * include/ext/new_allocator.h: Likewise. * include/ext/numeric: Likewise. * include/ext/pod_char_traits.h: Likewise. * include/ext/pool_allocator.h: Likewise. * include/ext/random: Likewise. * include/ext/random.tcc: Likewise. * include/ext/rb_tree: Likewise. * include/ext/rc_string_base.h: Likewise. * include/ext/rope: Likewise. * include/ext/ropeimpl.h: Likewise. * include/ext/slist: Likewise. * include/ext/sso_string_base.h: Likewise. * include/ext/stdio_filebuf.h: Likewise. * include/ext/stdio_sync_filebuf.h: Likewise. * include/ext/string_conversions.h: Likewise. * include/ext/throw_allocator.h: Likewise. * include/ext/vstring.h: Likewise. * include/ext/vstring.tcc: Likewise. * include/ext/vstring_fwd.h: Likewise. * include/ext/vstring_util.h: Likewise. * include/std/charconv: Likewise. (__cpp_lib_to_chars): Do not define for freestanding. * include/std/version: Adjust which macros get defined in freestanding. * include/ext/pointer.h [!_GLIBCXX_HOSTED]: Omit iostream functionality from freestanding. * include/std/algorithm [!_GLIBCXX_HOSTED]: Omit PSTL algos. * include/std/memory [!_GLIBCXX_HOSTED]: Omit <bits/stl_tempbuf.h> in freestanding * include/bits/algorithmfwd.h [!_GLIBCXX_HOSTED]: Omit leftover random_shuffle and stable_partition definition. * include/bits/stl_algo.h [!_GLIBCXX_HOSTED]: Omit random_shuffle and stable_partition from freestanding. * include/bits/ranges_algo.h [!_GLIBCXX_HOSTED]: Omit stable_partition from freestanding. * include/bits/concept_check.h: Remove needless HOSTED check. * include/std/iterator: Include <bits/ranges_base.h>. * include/std/numeric (__cpp_lib_parallel_algorithms): Do not define for freestanding. * include/std/functional (__cpp_lib_boyer_moore_searcher): Likewise. * testsuite/lib/prune.exp: Match error for hosted-only libstdc++ tests.
2022-10-03libstdc++: Adjust precompiled headers for freestandingJonathan Wakely2-12/+86
Co-authored-by: Arsen Arsenović <arsen@aarsen.me> libstdc++-v3/ChangeLog: * include/precompiled/extc++.h [!_GLIBCXX_HOSTED]: Do not include headers that aren't valid for freestanding. * include/precompiled/stdc++.h [!_GLIBCXX_HOSTED]: Likewise.
2022-10-03libstdc++: Filter out unconditional <stdio.h> default includeArsen Arsenović2-8/+26
_AC_INCLUDES_DEFAULT_REQUIREMENTS including <stdio.h> when checking for stdint.h has prevented proper detection of whether stdint.h is present, since it'd poison the cache variables with test results failing due to <stdio.h> failing to include. As a solution, for autoconf versions under 2.70, we filter out that bit of code from ac_includes_default. This issue was fixed in autoconf-2.70. This also applies to various other headers, but was noticed when looking into why HAVE_STDINT_H was misdefined. libstdc++-v3/ChangeLog: * configure.ac: Remove any lines that unconditionally include <stdio.h> from ac_includes_default, when running Autoconf <2.70. * configure: Regenerate.
2022-10-03libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626]Jonathan Wakely6-7/+7
This allows the library to switch to freestanding mode when compiling with the -ffreestanding flag. This means you don't need a separate libstdc++ build configured with --disable-hosted-libstdcxx in order to compile for a freestanding environment. The testsuite support files cannot be compiled for freestanding, so add -fno-freestanding to override any -ffreestanding in the test flags. libstdc++-v3/ChangeLog: PR libstdc++/103626 * acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Define _GLIBCXX_HOSTED to __STDC_HOSTED__ for non-freestanding installations. * configure: Regenerate. * include/Makefile.am (${host_builddir}/c++config.h): Adjust grep pattern. * include/Makefile.in: Regenerate. * testsuite/lib/libstdc++.exp (v3-build_support): Use -fno-freestanding. * testsuite/libstdc++-abi/abi.exp: Likewise.
2022-10-03libstdc++: Fix tests broken by C++23 P2266R3 "Simpler implicit move"Jonathan Wakely2-2/+2
In C++23 mode these tests started to FAIL because an rvalue reference parameter can no longer be bound to an lvalue reference return type. As confirmed by Ville (who added these tests) the problem overloads are not intended to be called, and only exist to verify that they don't interfere with the intended behaviour. This changes the function bodies to just throw, so that the tests will fail if the function is called. libstdc++-v3/ChangeLog: * testsuite/27_io/basic_ostream/inserters_other/char/6.cc: Change body of unused operator<< overload to throw if called. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc: Likewise.
2022-10-03libstdc++: Fix gdb pretty printers when dealing with std::stringFrançois Dumont7-27/+23
Since revision 33b43b0d8cd2de722d177ef823930500948a7487 std::string and other similar typedef are ambiguous from a gdb point of view because it matches both std::basic_string<char> and std::__cxx11::basic_string<char> symbols. For those typedef add a workaround to accept the substitution as long as the same regardless of __cxx11 namespace. Also avoid to register printers for types in std::__cxx11::__8:: namespace, there is no such symbols. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (Printer.add_version): Do not add version namespace for __cxx11 symbols. (add_one_template_type_printer): Likewise. (add_one_type_printer): Likewise. (FilteringTypePrinter._recognizer.recognize): Add a workaround for std::string & al ambiguous typedef matching both std:: and std::__cxx11:: symbols. * testsuite/libstdc++-prettyprinters/cxx17.cc: Remove obsolete \#define _GLIBCXX_USE_CXX11_ABI 0. * testsuite/libstdc++-prettyprinters/simple.cc: Likewise. Adapt test to accept std::__cxx11::list. * testsuite/libstdc++-prettyprinters/simple11.cc: Likewise. * testsuite/libstdc++-prettyprinters/whatis.cc: Likewise. * testsuite/libstdc++-prettyprinters/80276.cc: Likewise and remove xfail for c++20 and debug mode. * testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
2022-10-01Daily bump.GCC Administrator1-0/+32
2022-09-30libstdc++: Remove <sstream> dependency from std::bitset::to_ulong() testJonathan Wakely1-12/+1
There's no need to use a stringstream to test the to_ulong() member. This will allow the test to be used in freestanding mode. libstdc++-v3/ChangeLog: * testsuite/20_util/bitset/access/to_ulong.cc: Construct bitset from binary literal instead of using stringstream.
2022-09-30libstdc++: Optimize operator>> for std::bitsetJonathan Wakely1-9/+27
We can improve performance by using a char buffer instead of basic_string. The loop bound already means we can't overflow the buffer, and we don't need to keep writing a null character after every character written to the buffer. We could just use basic_string::resize(N) to zero-init the whole string, then overwrite those chars. But that zero-init of all N chars would be wasted in the case where we are writing to a bitset<N> with large N, but only end up extracting one or two chars from the stream. With this change we just use buffer of uninitialized chars. For a small-ish bitset (currently <= 256) we can improve performance further by using alloca instead of the heap. libstdc++-v3/ChangeLog: * include/std/bitset (operator>>): Use a simple buffer instead of std::basic_string.
2022-09-30libstdc++: Remove non-standard public members in std::bitsetJonathan Wakely1-36/+33
This makes _M_copy_from_ptr, _M_copy_from_string and _M_copy_to_string private, and declares operator<< and operator>> as friends. Also remove the historical _M_copy_from_string and _M_copy_to_string overloads. Those were used before DR 396 was implemented but are not needed now. There are no tests or docs describing them, so I don't think we intend to support them as extensions. libstdc++-v3/ChangeLog: * include/std/bitset (_M_copy_from_ptr, _M_copy_from_string) (_M_copy_to_string): Change access to private. (_M_copy_from_string(const basic_string&, size_t, size_t)): Remove. (_M_copy_to_string(const basic_string&)): Remove.
2022-09-30libstdc++: Fix broken dg-prune-outputJonathan Wakely1-1/+1
The new pattern in the dg-prune-output directive doesn't work. Instead of a messy regex full of leaning toothpicks, just match on the diagnostic text instead of the header paths. libstdc++-v3/ChangeLog: * testsuite/20_util/bind/ref_neg.cc: Fix dg-prune-output directive.
2022-09-30testsuite: Windows paths use \ and not /Torbjörn SVENSSON1-1/+1
libstdc++-v3/ChangeLog: * testsuite/20_util/bind/ref_neg.cc: Prune Windows paths too. Co-Authored-By: Yvan ROUX <yvan.roux@foss.st.com> Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
2022-09-30libstdc++: Add missing <bits/stl_algobase.h> include to <bitset>Arsen Arsenović1-0/+2
libstdc++-v3/ChangeLog: * include/std/bitset: Include <bits/stl_algobase.h>.
2022-09-30Daily bump.GCC Administrator1-0/+17
2022-09-29libstdc++: [_GLIBCXX_INLINE_VERSION] Add gdb pretty print for _GLIBCXX_DEBUGFrançois Dumont1-0/+4
In _GLIBCXX_DEBUG mode containers are in std::__debug namespace but not template parameters. In _GLIBCXX_INLINE_VERSION mode most types are in std::__8 namespace but not std::__debug containers. We need to register specific type printers for this combination. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (add_one_template_type_printer): Register printer for types in std::__debug namespace with template parameters in std::__8 namespace.
2022-09-29c++: implement __remove_cv, __remove_reference and __remove_cvrefPatrick Palka1-4/+1
This implements builtins for std::remove_cv, std::remove_reference and std::remove_cvref using TRAIT_TYPE from the previous patch. gcc/c-family/ChangeLog: * c-common.cc (c_common_reswords): Add __remove_cv, __remove_reference and __remove_cvref. * c-common.h (enum rid): Add RID_REMOVE_CV, RID_REMOVE_REFERENCE and RID_REMOVE_CVREF. gcc/cp/ChangeLog: * constraint.cc (diagnose_trait_expr): Handle CPTK_REMOVE_CV, CPTK_REMOVE_REFERENCE and CPTK_REMOVE_CVREF. * cp-objcp-common.cc (names_builtin_p): Likewise. * cp-tree.h (enum cp_trait_kind): Add CPTK_REMOVE_CV, CPTK_REMOVE_REFERENCE and CPTK_REMOVE_CVREF. * cxx-pretty-print.cc (pp_cxx_trait): Handle CPTK_REMOVE_CV, CPTK_REMOVE_REFERENCE and CPTK_REMOVE_CVREF. * parser.cc (cp_keyword_starts_decl_specifier_p): Return true for RID_REMOVE_CV, RID_REMOVE_REFERENCE and RID_REMOVE_CVREF. (cp_parser_trait): Handle RID_REMOVE_CV, RID_REMOVE_REFERENCE and RID_REMOVE_CVREF. (cp_parser_simple_type_specifier): Likewise. * semantics.cc (finish_trait_type): Likewise. libstdc++-v3/ChangeLog: * include/bits/unique_ptr.h (unique_ptr<_Tp[], _Dp>): Remove __remove_cv and use __remove_cv_t instead. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __remove_cv, __remove_reference and __remove_cvref. * g++.dg/ext/remove_cv.C: New test. * g++.dg/ext/remove_reference.C: New test. * g++.dg/ext/remove_cvref.C: New test.
2022-09-29libstdc++: Guard use of new built-in with __has_builtinJonathan Wakely1-1/+6
I forgot that non-GCC compilers don't have this built-in yet. For Clang we could do something like the check below (as described in P2255), but for now I'm just fixing the regression. #if __has_builtin((__reference_binds_to_temporary) bool _Dangle = __reference_binds_to_temporary(_Tp, _Res_t) && __and_<is_reference<_Tp>, __not_<is_reference<_Res_t>>, is_convertible<__remove_cvref_t<_Res_t>*, __remove_cvref_t<_Tp>*>>::value #endif libstdc++-v3/ChangeLog: * include/std/type_traits (__is_invocable_impl): Check __has_builtin(__reference_converts_from_temporary) before using built-in.
2022-09-29Daily bump.GCC Administrator1-0/+41
2022-09-29libstdc++: Disable volatile-qualified std::bind for C++20Jonathan Wakely13-33/+87
LWG 2487 added a precondition to std::bind for C++17, making volatile-qualified uses undefined. We still support it, but with a deprecated warning. P1065R2 made it explicitly ill-formed for C++20, so we should no longer accept it as deprecated. This implements that change. libstdc++-v3/ChangeLog: * doc/xml/manual/evolution.xml: Document std::bind API changes. * doc/xml/manual/intro.xml: Document LWG 2487 status. * doc/xml/manual/using.xml: Clarify default value of _GLIBCXX_USE_DEPRECATED. * doc/html/*: Regenerate. * include/std/functional (_Bind::operator()(Args&&...) volatile) (_Bind::operator()(Args&&...) const volatile) (_Bind_result::operator()(Args&&...) volatile) (_Bind_result::operator()(Args&&...) const volatile): Replace with deleted overload for C++20 and later. * testsuite/20_util/bind/cv_quals.cc: Check for deprecated warnings in C++17. * testsuite/20_util/bind/cv_quals_2.cc: Likewise, and check for ill-formed in C++20.
2022-09-29libstdc++: Make INVOKE<R> refuse to create dangling references [PR70692]Jonathan Wakely7-28/+80
This is the next part of the library changes from P2255R2. This makes INVOKE<R> ill-formed if converting the INVOKE expression to R would bind a reference to a temporary object. The is_invocable_r trait is now false if the invocation would create a dangling reference. This is done by adding the dangling check to the __is_invocable_impl partial specialization used for INVOKE<R> expressions. This change also slightly simplifies the nothrow checking recently added to that partial specialization. This change also removes the is_invocable_r checks from the pre-C++17 implementation of std::__invoke_r, because there is no need for it to be SFINAE-friendly. None of our C++11 and C++14 uses of INVOKE<R> require those constraints. The std::function constructor needs to check is_invocable_r, but that's already done explicitly, so we don't need to recheck when calling __is_invoke_r in std::function::operator(). The other uses of std::__is_invoke_r do not need to be constrained and can just be ill-formed if the INVOKE<R> expression is ill-formed. libstdc++-v3/ChangeLog: PR libstdc++/70692 * include/bits/invoke.h [__cplusplus < 201703] (__invoke_r): Remove is_invocable and is_convertible constraints. * include/std/type_traits (__is_invocable_impl::_S_conv): Use non-deduced context for parameter. (__is_invocable_impl::_S_test): Remove _Check_noex template parameter and use deduced noexcept value in its place. Add bool parameter to detect dangling references. (__is_invocable_impl::type): Adjust call to _S_test to avoid deducing unnecessary noexcept property.. (__is_invocable_impl::__nothrow_type): Rename to ... (__is_invocable_impl::__nothrow_conv): ... this. Adjust call to _S_test to deduce noexcept property. * testsuite/20_util/bind/dangling_ref.cc: New test. * testsuite/20_util/function/cons/70692.cc: New test. * testsuite/20_util/function_objects/invoke/dangling_ref.cc: New test. * testsuite/20_util/is_invocable/dangling_ref.cc: New test. * testsuite/30_threads/packaged_task/cons/dangling_ref.cc: New test.
2022-09-28Daily bump.GCC Administrator1-0/+20