Skip to content
Snippets Groups Projects
  1. Mar 05, 2025
    • Jonathan Wakely's avatar
      libstdc++: Make enumerate_view::iterator::operator- noexcept · c7449f1b
      Jonathan Wakely authored
      Implement LWG 3912, approved in Varna, June 2023.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges (enumerate_view::_Iterator::operator-):
      	Add noexcept, as per LWG 3912.
      	* testsuite/std/ranges/adaptors/enumerate/1.cc: Check iterator
      	difference is noexcept.
      Unverified
      c7449f1b
    • yxj-github-437's avatar
      libstdc++: fix possible undefined std::timespec in module std · a08a5bc4
      yxj-github-437 authored
      I notice std::timespec and std::timespec_get are used in preprocessor
      condition _GLIBCXX_HAVE_TIMESPEC_GET. So in module std, it should be
      the same.
      
      libstdc++-v3:
      
      	* src/c++23/std-clib.cc.in (timespec): Move within preprocessor
      	group guarded by _GLIBCXX_HAVE_TIMESPEC_GET.
      Unverified
      a08a5bc4
    • Jonathan Wakely's avatar
      libstdc++: Move new functions to separate files [PR119110] · c21d5a35
      Jonathan Wakely authored
      The new test functions I added in r15-7765-g3866ca796d5281 are causing
      those tests to FAIL on Solaris and arm-thumb due to the linker
      complaining about undefined functions.  The new test functions are not
      called, so it shouldn't matter that they call undefined member
      functions, but it does.
      
      Move those functions to separate { dg-do compile } files so the linker
      isn't used and won't complain.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/119110
      	* testsuite/25_algorithms/move/constrained.cc: Move test06
      	function to ...
      	* testsuite/25_algorithms/move/105609.cc: New test.
      	* testsuite/25_algorithms/move_backward/constrained.cc: Move
      	test04 function to ...
      	* testsuite/25_algorithms/move_backward/105609.cc: New test.
      Unverified
      c21d5a35
    • Patrick Palka's avatar
      libstdc++: Implement P3138R5 views::cache_latest · 410a4c12
      Patrick Palka authored
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/version.def (ranges_cache_latest): Define.
      	* include/bits/version.h: Regenerate.
      	* include/std/ranges (__detail::__non_propagating_cache::_M_reset):
      	Export from base class _Optional_base.
      	(cache_latest_view): Define for C++26.
      	(cache_latest_view::_Iterator): Likewise.
      	(cache_latest_view::_Sentinel): Likewise.
      	(views::__detail::__can_cache_latest): Likewise.
      	(views::_CacheLatest, views::cache_latest): Likewise.
      	* testsuite/std/ranges/adaptors/cache_latest/1.cc: New test.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      410a4c12
    • Giuseppe D'Angelo's avatar
      libstdc++: use if consteval in stable_sort · 24ea4539
      Giuseppe D'Angelo authored
      
      This is a C++ >= 26 codepath for supporting constexpr stable_sort, so we
      know that we have if consteval available; it just needs protection with
      the feature-testing macro. Also merge the return in the same statement.
      Amends r15-7708-gff43f9853d3b10.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/stl_algo.h (__stable_sort): Use if consteval
      	instead of is_constant_evaluated.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      24ea4539
    • Patrick Palka's avatar
      libstdc++: Some concat_view bugfixes [PR115215, PR115218, LWG 4082] · 81c6c99e
      Patrick Palka authored
      
      - Use __builtin_unreachable to suppress a false-positive "control
        reaches end of non-void function" warning in the recursive lambda
        (which the existing tests failed to notice since test01 wasn't
        being called at runtime)
      - Relax the constraints on views::concat in the single-argument case
        as per PR115215
      - Add an input_range requirement to that same case as per LWG 4082
      - In the const-converting constructor of concat_view's iterator,
        don't require the first iterator to be default constructible
      
      	PR libstdc++/115215
      	PR libstdc++/115218
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges
      	(concat_view::iterator::_S_invoke_with_runtime_index): Use
      	__builtin_unreachable in recursive lambda to certify it always
      	exits via 'return'.
      	(concat_view::iterator::iterator): In the const-converting
      	constructor, direct initialize _M_it.
      	(views::_Concat::operator()): Adjust constraints in the
      	single-argument case as per LWG 4082.
      	* testsuite/std/ranges/concat/1.cc (test01): Call it at runtime
      	too.
      	(test04): New test.
      
      Reviewed-by: default avatarTomasz Kamiński <tkaminsk@redhat.com>
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      81c6c99e
    • Tomasz Kamiński's avatar
      libstdc++: Fix subrange conversion to pair-like [PR119121] · 95b2f8d8
      Tomasz Kamiński authored
      
      Fix regression introduced by r14-8710-g65b4cba9d6a9ff
      
      	PR libstdc++/119121
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_util.h (__detail::__pair_like_convertible_from):
      	Use `_Tp` in `is_reference_v` check
      	* testsuite/std/ranges/subrange/tuple_like.cc: New tests for
      	pair-like conversion
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      95b2f8d8
    • Giuseppe D'Angelo's avatar
      libstdc++: implement constexpr memory algorithms · 3052b336
      Giuseppe D'Angelo authored
      
      This commit adds support for C++26's constexpr specialized memory
      algorithms, introduced by P2283R2, P3508R0, P3369R0.
      
      The uninitialized_default, value, copy, move and fill algorithms are
      affected, in all of their variants (iterator-based, range-based and _n
      versions.)
      
      The changes are mostly mechanical -- add `constexpr` to a number of
      signatures when compiling in C++26 and above modes. The internal helper
      guard class for range algorithms instead can be marked unconditionally.
      
      uninitialized_default_construct is implemented in terms of the
      _Construct_novalue helper, which requires support for C++26's constexpr
      placement new from the compiler (P2747R2, which GCC implements). We can
      simply mark it as constexpr in C++26 language modes, even if the
      compiler does not support P2747R2 (e.g. Clang 17/18), because C++23's
      P2448R2 makes it OK to mark functions as constexpr even if they never
      qualify, and other compilers implement this.
      
      The only "real" change to the implementation of the algorithms is that
      during constant evaluation I need to dispatch to a constexpr-friendly
      version of them.
      
      For each algorithm family I've added only one test to cover it and its
      variants; the idea is to avoid too much repetition and simplify future
      maintenance.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_uninitialized.h: Mark the specialized
      	memory algorithms as constexpr in C++26. Also mark the members
      	of the _DestroyGuard helper class.
      	* include/bits/stl_uninitialized.h: Ditto.
      	* include/bits/stl_construct.h: (_Construct_novalue) Mark it
      	as constexpr in C++26.
      	* include/bits/version.def (raw_memory_algorithms): Bump the
      	feature-testing macro for C++26.
      	* include/bits/version.h: Regenerate.
      	* testsuite/20_util/headers/memory/synopsis.cc: Add constexpr to
      	the uninitialized_* algorithms (when in C++26) in the test.
      	* testsuite/20_util/specialized_algorithms/feature_test_macro.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_copy/constexpr.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_fill/constexpr.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc:
      	New test.
      	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc:
      	New test.
      
      Reviewed-by: default avatarPatrick Palka <ppalka@redhat.com>
      3052b336
    • GCC Administrator's avatar
      Daily bump. · c49ef76d
      GCC Administrator authored
      c49ef76d
  2. Mar 04, 2025
  3. Mar 01, 2025
  4. Feb 28, 2025
    • Jonathan Wakely's avatar
      libstdc++: Fix ranges::iter_move handling of rvalues [PR106612] · a8ee522c
      Jonathan Wakely authored
      
      The specification for std::ranges::iter_move apparently requires us to
      handle types which do not satisfy std::indirectly_readable, for example
      with overloaded operator* which behaves differently for different value
      categories.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/106612
      	* include/bits/iterator_concepts.h (_IterMove::__iter_ref_t):
      	New alias template.
      	(_IterMove::__result): Use __iter_ref_t instead of
      	std::iter_reference_t.
      	(_IterMove::__type): Remove incorrect __dereferenceable
      	constraint.
      	(_IterMove::operator()): Likewise. Add correct constraints. Use
      	__iter_ref_t instead of std::iter_reference_t. Forward parameter
      	as correct value category.
      	(iter_swap): Add comments.
      	* testsuite/24_iterators/customization_points/iter_move.cc: Test
      	that iter_move is found by ADL and that rvalue arguments are
      	handled correctly.
      
      Reviewed-by: default avatarPatrick Palka <ppalka@redhat.com>
      Unverified
      a8ee522c
    • Jonathan Wakely's avatar
      libstdc++: Fix ranges::move and ranges::move_backward to use iter_move [PR105609] · 3866ca79
      Jonathan Wakely authored
      The ranges::move and ranges::move_backward algorithms are supposed to
      use ranges::iter_move(iter) instead of std::move(*iter), which matters
      for an iterator type with an iter_move overload findable by ADL.
      
      Currently those algorithms use std::__assign_one which uses std::move,
      so define a new ranges::__detail::__assign_one helper function that uses
      ranges::iter_move.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/105609
      	* include/bits/ranges_algobase.h (__detail::__assign_one): New
      	helper function.
      	(__copy_or_move, __copy_or_move_backward): Use new function
      	instead of std::__assign_one.
      	* testsuite/25_algorithms/move/constrained.cc: Check that
      	ADL iter_move is used in preference to std::move.
      	* testsuite/25_algorithms/move_backward/constrained.cc:
      	Likewise.
      Unverified
      3866ca79
    • Jonathan Wakely's avatar
      libstdc++: Add static_assertions to ranges::to adaptor factory [PR112803] · a9cfcd0d
      Jonathan Wakely authored
      The standard requires that we reject attempts to create a ranges::to
      adaptor for cv-qualified types and non-class types. Currently we only
      diagnose it once the adaptor is used in a pipeline.
      
      This adds static assertions to diagnose it immediately.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/112803
      	* include/std/ranges (ranges::to): Add static assertions to
      	enforce Mandates conditions.
      	* testsuite/std/ranges/conv/112803.cc: New test.
      Unverified
      a9cfcd0d
    • Patrick Palka's avatar
      libstdc++: Improve optional's <=> constraint recursion workaround [PR104606] · 815f1f27
      Patrick Palka authored
      
      It turns out the reason the behavior of this testcase changed after CWG
      2369 is because validity of the substituted return type is now checked
      later, after constraints.  So a more reliable workaround for this issue
      is to add a constraint to check the validity of the return type earlier,
      matching the pre-CWG 2369 semantics.
      
      	PR libstdc++/104606
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/optional (operator<=>): Revert r14-9771 change.
      	Add constraint checking the validity of the return type
      	compare_three_way_result_t before the three_way_comparable_with
      	constraint.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      815f1f27
    • Patrick Palka's avatar
      libstdc++: Fix constraint recursion in basic_const_iterator relops [PR112490] · 4342c50c
      Patrick Palka authored
      
      Here for
      
        using RCI = reverse_iterator<basic_const_iterator<vector<int>::iterator>>
        static_assert(std::totally_ordered<RCI>);
      
      we effectively need to check the requirement
      
        requires (RCI x) { x RELOP x; }  for each RELOP in {<, >, <=, >=}
      
      which we expect to be straightforwardly satisfied by reverse_iterator's
      namespace-scope relops.  But due to ADL we find ourselves also
      considering the basic_const_iterator relop friends, which before CWG
      2369 would be quickly discarded since RCI clearly isn't convertible to
      basic_const_iterator.  After CWG 2369 though we must first check these
      relops' constraints (with _It = vector<int>::iterator and _It2 = RCI),
      which entails checking totally_ordered<RCI> recursively.
      
      This patch fixes this by turning the problematic non-dependent function
      parameters of type basic_const_iterator<_It> into dependent ones of
      type basic_const_iterator<_It3> where _It3 is constrained to match _It.
      Thus the basic_const_iterator relop friends now get quickly discarded
      during deduction and before the constraint check if the second operand
      isn't a specialization of basic_const_iterator (or derived from one)
      like before CWG 2369.
      
      	PR libstdc++/112490
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/stl_iterator.h (basic_const_iterator::operator<):
      	Replace non-dependent basic_const_iterator function parameter with
      	a dependent one of type basic_const_iterator<_It3> where _It3
      	matches _It.
      	(basic_const_iterator::operator>): Likewise.
      	(basic_const_iterator::operator<=): Likewise.
      	(basic_const_iterator::operator>=): Likewise.
      	* testsuite/24_iterators/const_iterator/112490.cc: New test.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      4342c50c
    • GCC Administrator's avatar
      Daily bump. · d880cb46
      GCC Administrator authored
      d880cb46
  5. Feb 27, 2025
  6. Feb 26, 2025
  7. Feb 25, 2025
    • Giuseppe D'Angelo's avatar
      libstdc++: add support for constexpr stable_sort (P2562R1) · ff43f985
      Giuseppe D'Angelo authored
      
      stable_sort has been made constexpr in C++26. Apart from plastering a
      few functions with constexpr, there's an implementation challenge, that
      is: stable_sort takes different codepaths in case extra memory can be
      allocated. Rather than doing some major refactorings, simply use the
      non-allocating path during constant evaluation. That's the same codepath
      used when extra memory could not be allocated, as well as by
      freestanding.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/algorithmfwd.h (stable_sort): Add constexpr.
      	* include/bits/ranges_algo.h (__stable_sort_fn): Add constexpr
      	to the function call operators.
      	* include/bits/stl_algo.h (__stable_sort): Add constexpr.
      	During constant evaluation, always use the non-allocating path.
      	(stable_sort): Add constexpr.
      	(__inplace_stable_sort): Likewise.
      	(__merge_without_buffer): Likewise.
      	* include/bits/version.def (constexpr_algorithms): Bump value
      	for C++26.
      	* include/bits/version.h: Regnerate.
      	* testsuite/25_algorithms/cpp_lib_constexpr.cc: Test the bumped
      	feature-testing macro.
      	* testsuite/25_algorithms/headers/algorithm/synopsis.cc: Adapt
      	the test to constexpr stable_sort.
      	* testsuite/25_algorithms/stable_sort/constexpr.cc: New test.
      
      Signed-off-by: default avatarGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>
      Unverified
      ff43f985
    • Giuseppe D'Angelo's avatar
      libstdc++: add a constexpr macro for C++26 · 6a30ffd7
      Giuseppe D'Angelo authored
      
      Following the precedent of _GLIBCXX20_CONSTEXPR.
      
      It will be used to decorate some functions which have been made
      constexpr in C++26 (for instance P2562R1, and maybe P3508R0, P3369R0,
      ...).
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/c++config (_GLIBCXX26_CONSTEXPR): New macro.
      
      Signed-off-by: default avatarGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>
      Unverified
      6a30ffd7
    • Jonathan Wakely's avatar
      libstdc++: Fix typo in std::fill SFINAE constraint [PR93059] · 2256e308
      Jonathan Wakely authored
      The r15-4321-gd8ef4471cb9c9f change incorrectly used __value as the
      member of the __memcpyable_integer trait, but it should have been
      __width. That meant this overload was not being used for _Tp != _Up.
      
      Also return after doing the loop for the consteval case. The missing
      return wasn't causing incorrect behaviour because the consteval loop
      increments the iterator until it equals the end of the range, so the
      memset isn't done.  But it's still better to return and not even try
      to do the memset.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/93059
      	* include/bits/stl_algobase.h (__fill_a1): Fix typo in SFINAE
      	constraint.
      Unverified
      2256e308
    • François Dumont's avatar
      libstdc++: [_Hashtable] Fix hash code cache usage when stateful hash functor · bcc8dea6
      François Dumont authored
      It is wrong to reuse a cached hash code from another container when this code depends
      on the state of the container's Hash functor.
      
      Add checks that Hash functor is stateless before reusing the cached hash code.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/hashtable_policy.h
      	(_Hash_code_base::_M_copy_code, _Hash_code_base::_M_store_code): Remove.
      	* include/bits/hashtable.h (_M_hash_code_ext): New.
      	(_M_merge_multi(_Hashtable&)): Use latter.
      	(_M_copy_code): New.
      	(_M_assign): Use latter.
      	(_M_bucket_index_ex): New.
      	(_M_equals): Use latter.
      	(_M_store_code): New.
      	(_M_src_hash_code): Remove key_type parameter.
      	* testsuite/23_containers/unordered_map/modifiers/merge.cc (test10): New
      	test case.
      Unverified
      bcc8dea6
    • Patrick Palka's avatar
      libstdc++: Implement LWG 4027 change to possibly-const-range [PR118083] · 1b9e4fe2
      Patrick Palka authored
      
      LWG 4027 effectively makes the const range access CPOs ranges::cfoo behave
      more consistently across C++23 and C++20 (pre-P2278R4) and also more
      consistently with the std::cfoo range accessors, as the below testcase
      adjustments demonstrate (which mostly consist of reverting workarounds
      added by r14-3771-gf12e26f3496275 and r13-7186-g0d94c6df183375).
      
      In passing fix PR118083 which reports that the input_range constraint on
      possibly-const-range is missing in our implementation.  A consequence of
      this is that the const range access CPOs now consistently reject a non-range
      argument, and so in some our of tests we need to introduce otherwise
      unused begin/end members.
      
      	PR libstdc++/118083
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/ranges_base.h
      	(ranges::__access::__possibly_const_range): Adjust logic as per
      	LWG 4027.  Add missing input_range constraint.
      	* testsuite/std/ranges/access/cbegin.cc (test05): Verify LWG
      	4027 testcases.
      	* testsuite/std/ranges/access/cdata.cc: Adjust, simplify and
      	consolidate some tests after the above.
      	* testsuite/std/ranges/access/cend.cc: Likewise.
      	* testsuite/std/ranges/access/crbegin.cc: Likewise.
      	* testsuite/std/ranges/access/crend.cc: Likewise.
      	* testsuite/std/ranges/adaptors/join.cc: Likewise.
      	* testsuite/std/ranges/adaptors/take_while.cc: Likewise.
      	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      1b9e4fe2
  8. Feb 23, 2025
  9. Feb 22, 2025
    • Jonathan Wakely's avatar
      libstdc++: Fix bootstrap failure with --enable-vtable-verify [PR118981] · d4a777d0
      Jonathan Wakely authored
      The compiler emits code with init_priority(99) for -fvtable-verify=std
      and that creates a section conflict with the uses of init_priority(99)
      that I recently added to src/c++20/tzdb.cc.
      
      Change tzdb.cc to use a different priority to avoid the conflict.
      
      libstdc++-v3/ChangeLog:
      
      	PR c++/118981
      	* src/c++20/tzdb.cc: Use init_priority(98) instead of
      	init_priority(99).
      Unverified
      d4a777d0
    • Thomas Schwinge's avatar
      Turn test cases into UNSUPPORTED if running into 'sorry, unimplemented:... · 0128fa8b
      Thomas Schwinge authored
      Turn test cases into UNSUPPORTED if running into 'sorry, unimplemented: dynamic stack allocation not supported'
      
      In Subversion r217296 (Git commit e2acc079)
      "Testsuite alloca fixes for ptx", effective-target 'alloca' was added to mark
      up test cases that run into the nvptx back end's non-support of dynamic stack
      allocation.  (Later, nvptx gained conditional support for that in
      commit 3861d362
      "nvptx: PTX 'alloca' for '-mptx=7.3'+, '-march=sm_52'+ [PR65181]", but on the
      other hand, in commit f93a612f
      "bpf: liberate R9 for general register allocation", the BPF back end joined
      "the list of targets that do not support alloca in target-support.exp".
      
      Manually maintaining the list of test cases requiring effective-target 'alloca'
      is notoriously hard, gets out of date quickly: new test cases added to the test
      suite may need to be analyzed and annotated, and over time annotations also may
      need to be removed, in cases where the compiler learns to optimize out
      'alloca'/VLA usage, for example.  This commit replaces (99 % of) the manual
      annotations with an automatic scheme: turn test cases into UNSUPPORTED if
      running into 'sorry, unimplemented: dynamic stack allocation not supported'.
      
      	gcc/testsuite/
      	* lib/target-supports.exp (check_effective_target_alloca):
      	Gracefully handle the case that we've not be called (indirectly)
      	from 'dg-test'.
      	* lib/gcc-dg.exp (proc gcc-dg-prune): Turn
      	'sorry, unimplemented: dynamic stack allocation not supported' into
      	UNSUPPORTED.
      	* c-c++-common/Walloca-larger-than.c: Don't
      	'dg-require-effective-target alloca'.
      	* c-c++-common/Warray-bounds-9.c: Likewise.
      	* c-c++-common/Warray-bounds.c: Likewise.
      	* c-c++-common/Wdangling-pointer-2.c: Likewise.
      	* c-c++-common/Wdangling-pointer-4.c: Likewise.
      	* c-c++-common/Wdangling-pointer-5.c: Likewise.
      	* c-c++-common/Wdangling-pointer.c: Likewise.
      	* c-c++-common/Wimplicit-fallthrough-7.c: Likewise.
      	* c-c++-common/Wsizeof-pointer-memaccess1.c: Likewise.
      	* c-c++-common/Wsizeof-pointer-memaccess2.c: Likewise.
      	* c-c++-common/Wstringop-truncation.c: Likewise.
      	* c-c++-common/Wunused-var-6.c: Likewise.
      	* c-c++-common/Wunused-var-8.c: Likewise.
      	* c-c++-common/analyzer/alloca-leak.c: Likewise.
      	* c-c++-common/analyzer/allocation-size-multiline-2.c: Likewise.
      	* c-c++-common/analyzer/allocation-size-multiline-3.c: Likewise.
      	* c-c++-common/analyzer/capacity-1.c: Likewise.
      	* c-c++-common/analyzer/capacity-3.c: Likewise.
      	* c-c++-common/analyzer/imprecise-floating-point-1.c: Likewise.
      	* c-c++-common/analyzer/infinite-recursion-alloca.c: Likewise.
      	* c-c++-common/analyzer/malloc-callbacks.c: Likewise.
      	* c-c++-common/analyzer/malloc-paths-8.c: Likewise.
      	* c-c++-common/analyzer/out-of-bounds-5.c: Likewise.
      	* c-c++-common/analyzer/out-of-bounds-diagram-11.c: Likewise.
      	* c-c++-common/analyzer/uninit-alloca.c: Likewise.
      	* c-c++-common/analyzer/write-to-string-literal-5.c: Likewise.
      	* c-c++-common/asan/alloca_loop_unpoisoning.c: Likewise.
      	* c-c++-common/auto-init-11.c: Likewise.
      	* c-c++-common/auto-init-12.c: Likewise.
      	* c-c++-common/auto-init-15.c: Likewise.
      	* c-c++-common/auto-init-16.c: Likewise.
      	* c-c++-common/builtins.c: Likewise.
      	* c-c++-common/dwarf2/vla1.c: Likewise.
      	* c-c++-common/gomp/pr61486-2.c: Likewise.
      	* c-c++-common/torture/builtin-clear-padding-4.c: Likewise.
      	* c-c++-common/torture/strub-run3.c: Likewise.
      	* c-c++-common/torture/strub-run4.c: Likewise.
      	* c-c++-common/torture/strub-run4c.c: Likewise.
      	* c-c++-common/torture/strub-run4d.c: Likewise.
      	* c-c++-common/torture/strub-run4i.c: Likewise.
      	* g++.dg/Walloca1.C: Likewise.
      	* g++.dg/Walloca2.C: Likewise.
      	* g++.dg/cpp0x/pr70338.C: Likewise.
      	* g++.dg/cpp1y/lambda-generic-vla1.C: Likewise.
      	* g++.dg/cpp1y/vla10.C: Likewise.
      	* g++.dg/cpp1y/vla2.C: Likewise.
      	* g++.dg/cpp1y/vla6.C: Likewise.
      	* g++.dg/cpp1y/vla8.C: Likewise.
      	* g++.dg/debug/debug5.C: Likewise.
      	* g++.dg/debug/debug6.C: Likewise.
      	* g++.dg/debug/pr54828.C: Likewise.
      	* g++.dg/diagnostic/pr70105.C: Likewise.
      	* g++.dg/eh/cleanup5.C: Likewise.
      	* g++.dg/eh/spbp.C: Likewise.
      	* g++.dg/ext/builtin_alloca.C: Likewise.
      	* g++.dg/ext/tmplattr9.C: Likewise.
      	* g++.dg/ext/vla10.C: Likewise.
      	* g++.dg/ext/vla11.C: Likewise.
      	* g++.dg/ext/vla12.C: Likewise.
      	* g++.dg/ext/vla15.C: Likewise.
      	* g++.dg/ext/vla16.C: Likewise.
      	* g++.dg/ext/vla17.C: Likewise.
      	* g++.dg/ext/vla23.C: Likewise.
      	* g++.dg/ext/vla3.C: Likewise.
      	* g++.dg/ext/vla6.C: Likewise.
      	* g++.dg/ext/vla7.C: Likewise.
      	* g++.dg/init/array24.C: Likewise.
      	* g++.dg/init/new47.C: Likewise.
      	* g++.dg/init/pr55497.C: Likewise.
      	* g++.dg/opt/pr78201.C: Likewise.
      	* g++.dg/template/vla2.C: Likewise.
      	* g++.dg/torture/Wsizeof-pointer-memaccess1.C: Likewise.
      	* g++.dg/torture/Wsizeof-pointer-memaccess2.C: Likewise.
      	* g++.dg/torture/pr62127.C: Likewise.
      	* g++.dg/torture/pr67055.C: Likewise.
      	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
      	* g++.dg/warn/Wplacement-new-size-5.C: Likewise.
      	* g++.dg/warn/Wsizeof-pointer-memaccess-1.C: Likewise.
      	* g++.dg/warn/Wvla-1.C: Likewise.
      	* g++.dg/warn/Wvla-3.C: Likewise.
      	* g++.old-deja/g++.ext/array2.C: Likewise.
      	* g++.old-deja/g++.ext/constructor.C: Likewise.
      	* g++.old-deja/g++.law/builtin1.C: Likewise.
      	* g++.old-deja/g++.other/crash12.C: Likewise.
      	* g++.old-deja/g++.other/eh3.C: Likewise.
      	* g++.old-deja/g++.pt/array6.C: Likewise.
      	* g++.old-deja/g++.pt/dynarray.C: Likewise.
      	* gcc.c-torture/compile/20000923-1.c: Likewise.
      	* gcc.c-torture/compile/20030224-1.c: Likewise.
      	* gcc.c-torture/compile/20071108-1.c: Likewise.
      	* gcc.c-torture/compile/20071117-1.c: Likewise.
      	* gcc.c-torture/compile/900313-1.c: Likewise.
      	* gcc.c-torture/compile/parms.c: Likewise.
      	* gcc.c-torture/compile/pr17397.c: Likewise.
      	* gcc.c-torture/compile/pr35006.c: Likewise.
      	* gcc.c-torture/compile/pr42956.c: Likewise.
      	* gcc.c-torture/compile/pr51354.c: Likewise.
      	* gcc.c-torture/compile/pr52714.c: Likewise.
      	* gcc.c-torture/compile/pr55851.c: Likewise.
      	* gcc.c-torture/compile/pr77754-1.c: Likewise.
      	* gcc.c-torture/compile/pr77754-2.c: Likewise.
      	* gcc.c-torture/compile/pr77754-3.c: Likewise.
      	* gcc.c-torture/compile/pr77754-4.c: Likewise.
      	* gcc.c-torture/compile/pr77754-5.c: Likewise.
      	* gcc.c-torture/compile/pr77754-6.c: Likewise.
      	* gcc.c-torture/compile/pr78439.c: Likewise.
      	* gcc.c-torture/compile/pr79413.c: Likewise.
      	* gcc.c-torture/compile/pr82564.c: Likewise.
      	* gcc.c-torture/compile/pr87110.c: Likewise.
      	* gcc.c-torture/compile/pr99787-1.c: Likewise.
      	* gcc.c-torture/compile/vla-const-1.c: Likewise.
      	* gcc.c-torture/compile/vla-const-2.c: Likewise.
      	* gcc.c-torture/execute/20010209-1.c: Likewise.
      	* gcc.c-torture/execute/20020314-1.c: Likewise.
      	* gcc.c-torture/execute/20020412-1.c: Likewise.
      	* gcc.c-torture/execute/20021113-1.c: Likewise.
      	* gcc.c-torture/execute/20040223-1.c: Likewise.
      	* gcc.c-torture/execute/20040308-1.c: Likewise.
      	* gcc.c-torture/execute/20040811-1.c: Likewise.
      	* gcc.c-torture/execute/20070824-1.c: Likewise.
      	* gcc.c-torture/execute/20070919-1.c: Likewise.
      	* gcc.c-torture/execute/built-in-setjmp.c: Likewise.
      	* gcc.c-torture/execute/pr22061-1.c: Likewise.
      	* gcc.c-torture/execute/pr43220.c: Likewise.
      	* gcc.c-torture/execute/pr82210.c: Likewise.
      	* gcc.c-torture/execute/pr86528.c: Likewise.
      	* gcc.c-torture/execute/vla-dealloc-1.c: Likewise.
      	* gcc.dg/20001012-2.c: Likewise.
      	* gcc.dg/20020415-1.c: Likewise.
      	* gcc.dg/20030331-2.c: Likewise.
      	* gcc.dg/20101010-1.c: Likewise.
      	* gcc.dg/Walloca-1.c: Likewise.
      	* gcc.dg/Walloca-10.c: Likewise.
      	* gcc.dg/Walloca-11.c: Likewise.
      	* gcc.dg/Walloca-12.c: Likewise.
      	* gcc.dg/Walloca-13.c: Likewise.
      	* gcc.dg/Walloca-14.c: Likewise.
      	* gcc.dg/Walloca-15.c: Likewise.
      	* gcc.dg/Walloca-2.c: Likewise.
      	* gcc.dg/Walloca-3.c: Likewise.
      	* gcc.dg/Walloca-4.c: Likewise.
      	* gcc.dg/Walloca-5.c: Likewise.
      	* gcc.dg/Walloca-6.c: Likewise.
      	* gcc.dg/Walloca-7.c: Likewise.
      	* gcc.dg/Walloca-8.c: Likewise.
      	* gcc.dg/Walloca-9.c: Likewise.
      	* gcc.dg/Walloca-larger-than-2.c: Likewise.
      	* gcc.dg/Walloca-larger-than-3.c: Likewise.
      	* gcc.dg/Walloca-larger-than-4.c: Likewise.
      	* gcc.dg/Walloca-larger-than.c: Likewise.
      	* gcc.dg/Warray-bounds-22.c: Likewise.
      	* gcc.dg/Warray-bounds-41.c: Likewise.
      	* gcc.dg/Warray-bounds-46.c: Likewise.
      	* gcc.dg/Warray-bounds-48-novec.c: Likewise.
      	* gcc.dg/Warray-bounds-48.c: Likewise.
      	* gcc.dg/Warray-bounds-50.c: Likewise.
      	* gcc.dg/Warray-bounds-63.c: Likewise.
      	* gcc.dg/Warray-bounds-66.c: Likewise.
      	* gcc.dg/Wdangling-pointer.c: Likewise.
      	* gcc.dg/Wfree-nonheap-object-2.c: Likewise.
      	* gcc.dg/Wfree-nonheap-object.c: Likewise.
      	* gcc.dg/Wrestrict-17.c: Likewise.
      	* gcc.dg/Wrestrict.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-2.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-3.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-4.c: Likewise.
      	* gcc.dg/Wreturn-local-addr-6.c: Likewise.
      	* gcc.dg/Wsizeof-pointer-memaccess1.c: Likewise.
      	* gcc.dg/Wstack-usage.c: Likewise.
      	* gcc.dg/Wstrict-aliasing-bogus-vla-1.c: Likewise.
      	* gcc.dg/Wstrict-overflow-27.c: Likewise.
      	* gcc.dg/Wstringop-overflow-15.c: Likewise.
      	* gcc.dg/Wstringop-overflow-23.c: Likewise.
      	* gcc.dg/Wstringop-overflow-25.c: Likewise.
      	* gcc.dg/Wstringop-overflow-27.c: Likewise.
      	* gcc.dg/Wstringop-overflow-3.c: Likewise.
      	* gcc.dg/Wstringop-overflow-39.c: Likewise.
      	* gcc.dg/Wstringop-overflow-56.c: Likewise.
      	* gcc.dg/Wstringop-overflow-57.c: Likewise.
      	* gcc.dg/Wstringop-overflow-67.c: Likewise.
      	* gcc.dg/Wstringop-overflow-71.c: Likewise.
      	* gcc.dg/Wstringop-truncation-3.c: Likewise.
      	* gcc.dg/Wvla-larger-than-1.c: Likewise.
      	* gcc.dg/Wvla-larger-than-2.c: Likewise.
      	* gcc.dg/Wvla-larger-than-3.c: Likewise.
      	* gcc.dg/Wvla-larger-than-4.c: Likewise.
      	* gcc.dg/Wvla-larger-than-5.c: Likewise.
      	* gcc.dg/analyzer/boxed-malloc-1.c: Likewise.
      	* gcc.dg/analyzer/call-summaries-2.c: Likewise.
      	* gcc.dg/analyzer/malloc-1.c: Likewise.
      	* gcc.dg/analyzer/malloc-reuse.c: Likewise.
      	* gcc.dg/analyzer/out-of-bounds-diagram-12.c: Likewise.
      	* gcc.dg/analyzer/pr93355-localealias.c: Likewise.
      	* gcc.dg/analyzer/putenv-1.c: Likewise.
      	* gcc.dg/analyzer/taint-alloc-1.c: Likewise.
      	* gcc.dg/analyzer/torture/pr93373.c: Likewise.
      	* gcc.dg/analyzer/torture/ubsan-1.c: Likewise.
      	* gcc.dg/analyzer/vla-1.c: Likewise.
      	* gcc.dg/atomic/stdatomic-vm.c: Likewise.
      	* gcc.dg/attr-alloc_size-6.c: Likewise.
      	* gcc.dg/attr-alloc_size-7.c: Likewise.
      	* gcc.dg/attr-alloc_size-8.c: Likewise.
      	* gcc.dg/attr-alloc_size-9.c: Likewise.
      	* gcc.dg/attr-noipa.c: Likewise.
      	* gcc.dg/auto-init-uninit-36.c: Likewise.
      	* gcc.dg/auto-init-uninit-9.c: Likewise.
      	* gcc.dg/auto-type-1.c: Likewise.
      	* gcc.dg/builtin-alloc-size.c: Likewise.
      	* gcc.dg/builtin-dynamic-alloc-size.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-1.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-2.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-3.c: Likewise.
      	* gcc.dg/builtin-dynamic-object-size-4.c: Likewise.
      	* gcc.dg/builtin-object-size-1.c: Likewise.
      	* gcc.dg/builtin-object-size-2.c: Likewise.
      	* gcc.dg/builtin-object-size-3.c: Likewise.
      	* gcc.dg/builtin-object-size-4.c: Likewise.
      	* gcc.dg/builtins-64.c: Likewise.
      	* gcc.dg/builtins-68.c: Likewise.
      	* gcc.dg/c23-auto-2.c: Likewise.
      	* gcc.dg/c99-const-expr-13.c: Likewise.
      	* gcc.dg/c99-vla-1.c: Likewise.
      	* gcc.dg/fold-alloca-1.c: Likewise.
      	* gcc.dg/gomp/pr30494.c: Likewise.
      	* gcc.dg/gomp/vla-2.c: Likewise.
      	* gcc.dg/gomp/vla-3.c: Likewise.
      	* gcc.dg/gomp/vla-4.c: Likewise.
      	* gcc.dg/gomp/vla-5.c: Likewise.
      	* gcc.dg/graphite/pr99085.c: Likewise.
      	* gcc.dg/guality/guality.c: Likewise.
      	* gcc.dg/lto/pr80778_0.c: Likewise.
      	* gcc.dg/nested-func-10.c: Likewise.
      	* gcc.dg/nested-func-12.c: Likewise.
      	* gcc.dg/nested-func-13.c: Likewise.
      	* gcc.dg/nested-func-14.c: Likewise.
      	* gcc.dg/nested-func-15.c: Likewise.
      	* gcc.dg/nested-func-16.c: Likewise.
      	* gcc.dg/nested-func-17.c: Likewise.
      	* gcc.dg/nested-func-9.c: Likewise.
      	* gcc.dg/packed-vla.c: Likewise.
      	* gcc.dg/pr100225.c: Likewise.
      	* gcc.dg/pr25682.c: Likewise.
      	* gcc.dg/pr27301.c: Likewise.
      	* gcc.dg/pr31507-1.c: Likewise.
      	* gcc.dg/pr33238.c: Likewise.
      	* gcc.dg/pr41470.c: Likewise.
      	* gcc.dg/pr49120.c: Likewise.
      	* gcc.dg/pr50764.c: Likewise.
      	* gcc.dg/pr51491-2.c: Likewise.
      	* gcc.dg/pr51990-2.c: Likewise.
      	* gcc.dg/pr51990.c: Likewise.
      	* gcc.dg/pr59011.c: Likewise.
      	* gcc.dg/pr59523.c: Likewise.
      	* gcc.dg/pr61561.c: Likewise.
      	* gcc.dg/pr78468.c: Likewise.
      	* gcc.dg/pr78902.c: Likewise.
      	* gcc.dg/pr79972.c: Likewise.
      	* gcc.dg/pr82875.c: Likewise.
      	* gcc.dg/pr83844.c: Likewise.
      	* gcc.dg/pr84131.c: Likewise.
      	* gcc.dg/pr87099.c: Likewise.
      	* gcc.dg/pr87320.c: Likewise.
      	* gcc.dg/pr89045.c: Likewise.
      	* gcc.dg/pr91014.c: Likewise.
      	* gcc.dg/pr93986.c: Likewise.
      	* gcc.dg/pr98721-1.c: Likewise.
      	* gcc.dg/pr99122-2.c: Likewise.
      	* gcc.dg/shrink-wrap-alloca.c: Likewise.
      	* gcc.dg/sso-14.c: Likewise.
      	* gcc.dg/strlenopt-62.c: Likewise.
      	* gcc.dg/strlenopt-83.c: Likewise.
      	* gcc.dg/strlenopt-84.c: Likewise.
      	* gcc.dg/strlenopt-91.c: Likewise.
      	* gcc.dg/torture/Wsizeof-pointer-memaccess1.c: Likewise.
      	* gcc.dg/torture/calleesave-sse.c: Likewise.
      	* gcc.dg/torture/pr48953.c: Likewise.
      	* gcc.dg/torture/pr71881.c: Likewise.
      	* gcc.dg/torture/pr71901.c: Likewise.
      	* gcc.dg/torture/pr78742.c: Likewise.
      	* gcc.dg/torture/pr92088-1.c: Likewise.
      	* gcc.dg/torture/pr92088-2.c: Likewise.
      	* gcc.dg/torture/pr93124.c: Likewise.
      	* gcc.dg/torture/pr94479.c: Likewise.
      	* gcc.dg/torture/stackalign/alloca-1.c: Likewise.
      	* gcc.dg/torture/stackalign/inline-2.c: Likewise.
      	* gcc.dg/torture/stackalign/nested-3.c: Likewise.
      	* gcc.dg/torture/stackalign/vararg-1.c: Likewise.
      	* gcc.dg/torture/stackalign/vararg-2.c: Likewise.
      	* gcc.dg/tree-ssa/20030807-2.c: Likewise.
      	* gcc.dg/tree-ssa/20080530.c: Likewise.
      	* gcc.dg/tree-ssa/alias-37.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-22.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-25.c: Likewise.
      	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Likewise.
      	* gcc.dg/tree-ssa/loop-interchange-15.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-1.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-2.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr23848-4.c: Likewise.
      	* gcc.dg/uninit-32.c: Likewise.
      	* gcc.dg/uninit-36.c: Likewise.
      	* gcc.dg/uninit-39.c: Likewise.
      	* gcc.dg/uninit-41.c: Likewise.
      	* gcc.dg/uninit-9-O0.c: Likewise.
      	* gcc.dg/uninit-9.c: Likewise.
      	* gcc.dg/uninit-pr100250.c: Likewise.
      	* gcc.dg/uninit-pr101300.c: Likewise.
      	* gcc.dg/uninit-pr101494.c: Likewise.
      	* gcc.dg/uninit-pr98583.c: Likewise.
      	* gcc.dg/vla-2.c: Likewise.
      	* gcc.dg/vla-22.c: Likewise.
      	* gcc.dg/vla-24.c: Likewise.
      	* gcc.dg/vla-3.c: Likewise.
      	* gcc.dg/vla-4.c: Likewise.
      	* gcc.dg/vla-stexp-1.c: Likewise.
      	* gcc.dg/vla-stexp-2.c: Likewise.
      	* gcc.dg/vla-stexp-4.c: Likewise.
      	* gcc.dg/vla-stexp-5.c: Likewise.
      	* gcc.dg/winline-7.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-1.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-10.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-2.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-3.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-4.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-5.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-6.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-7.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-8.c: Likewise.
      	* gcc.target/aarch64/stack-check-alloca-9.c: Likewise.
      	* gcc.target/arc/interrupt-6.c: Likewise.
      	* gcc.target/i386/pr80969-3.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-1.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-2.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-3.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-4.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-5.c: Likewise.
      	* gcc.target/loongarch/stack-check-alloca-6.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-1.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-10.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-2.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-3.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-4.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-5.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-6.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-7.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-8.c: Likewise.
      	* gcc.target/riscv/stack-check-alloca-9.c: Likewise.
      	* gcc.target/sparc/setjmp-1.c: Likewise.
      	* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise.
      	* gcc.c-torture/compile/20001221-1.c: Don't 'dg-skip-if'
      	for '! alloca'.
      	* gcc.c-torture/compile/20020807-1.c: Likewise.
      	* gcc.c-torture/compile/20050801-2.c: Likewise.
      	* gcc.c-torture/compile/920428-4.c: Likewise.
      	* gcc.c-torture/compile/debugvlafunction-1.c: Likewise.
      	* gcc.c-torture/compile/pr41469.c: Likewise.
      	* gcc.c-torture/execute/920721-2.c: Likewise.
      	* gcc.c-torture/execute/920929-1.c: Likewise.
      	* gcc.c-torture/execute/921017-1.c: Likewise.
      	* gcc.c-torture/execute/941202-1.c: Likewise.
      	* gcc.c-torture/execute/align-nest.c: Likewise.
      	* gcc.c-torture/execute/alloca-1.c: Likewise.
      	* gcc.c-torture/execute/pr22061-4.c: Likewise.
      	* gcc.c-torture/execute/pr36321.c: Likewise.
      	* gcc.dg/torture/pr8081.c: Likewise.
      	* gcc.dg/analyzer/data-model-1.c: Don't
      	'dg-require-effective-target alloca'.  XFAIL relevant
      	'dg-warning's for '! alloca'.
      	* gcc.dg/uninit-38.c: Likewise.
      	* gcc.dg/uninit-pr98578.c: Likewise.
      	* gcc.dg/compat/struct-by-value-22_main.c: Comment on
      	'dg-require-effective-target alloca'.
      	libstdc++-v3/
      	* testsuite/lib/prune.exp (proc libstdc++-dg-prune): Turn
      	'sorry, unimplemented: dynamic stack allocation not supported' into
      	UNSUPPORTED.
      0128fa8b
    • Jonathan Wakely's avatar
      libstdc++: Remove misleading comment in __atomic_base<Int> · 44702296
      Jonathan Wakely authored
      No conversion is needed because the type of _M_i is __int_type anyway.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/atomic_base.h (__atomic_base<_ITp>): Remove
      	misleading comment.
      Unverified
      44702296
    • Jonathan Wakely's avatar
      libstdc++: Remove redundant cast in floating_from_chars.cc · a742b27b
      Jonathan Wakely authored
      In r15-7647-g32457bc25fea80 I added a cast and also changed the type of
      the variable, making the cast redundant. This removes the cast.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
      	Remove redundant cast.
      Unverified
      a742b27b
  10. Feb 21, 2025
  11. Feb 20, 2025
    • Jonathan Wakely's avatar
      libstdc++: Workaround Clang bug with __array_rank built-in [PR118559] · c0e865f7
      Jonathan Wakely authored
      We started using the __array_rank built-in with r15-1252-g6f0dfa6f1acdf7
      but that built-in is buggy in versions of Clang up to and including 19.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/118559
      	* include/std/type_traits (rank, rank_v): Do not use
      	__array_rank for Clang 19 and older.
      Unverified
      c0e865f7
    • Jonathan Wakely's avatar
      libstdc++: Add parentheses around _GLIBCXX_HAS_BUILTIN definition · 57f65c5c
      Jonathan Wakely authored
      This allows _GLIBCXX_HAS_BUILTIN (or _GLIBCXX_USE_BUILTIN_TRAIT) to be
      used as part of a larger logical expression.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/c++config (_GLIBCXX_HAS_BUILTIN): Add parentheses.
      Unverified
      57f65c5c
    • Jonathan Wakely's avatar
      libstdc++: Use new type-generic built-ins in <bit> [PR118855] · e8ad697a
      Jonathan Wakely authored
      This makes several functions in <bit> faster to compile, with fewer
      expressions to parse and fewer instantiations of __numeric_traits
      required.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/118855
      	* include/std/bit (__count_lzero, __count_rzero, __popcount):
      	Use type-generic built-ins when available.
      Unverified
      e8ad697a
    • Jonathan Wakely's avatar
      libstdc++: Fix invalid signed arguments to <bit> functions · 32457bc2
      Jonathan Wakely authored
      These should have been unsigned, but the static assertions are only in
      the public std::bit_ceil and std::bit_width functions, not the internal
      __bit_ceil and __bit_width ones.
      
      libstdc++-v3/ChangeLog:
      
      	* include/experimental/bits/simd.h (__find_next_valid_abi): Cast
      	__bit_ceil argument to unsigned.
      	* src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
      	Cast __bit_ceil argument to unsigned.
      	* src/c++17/memory_resource.cc (big_block): Cast __bit_width
      	argument to unsigned.
      Unverified
      32457bc2
    • Jonathan Wakely's avatar
      libstdc++: Remove workaround for reserved init_priority warnings · 29eb6f8f
      Jonathan Wakely authored
      Since r15-7511-g4e7f74225116e7 we can disable the warnings for using a
      reserved priority using a diagnostic pragma. That means we no longer
      need to put globals using that attribute into separate files that get
      included.
      
      This replaces the two uses of such separate files by moving the variable
      definition into the source file and adding the diagnostic pragma.
      
      libstdc++-v3/ChangeLog:
      
      	* src/c++17/memory_resource.cc (default_res): Define here
      	instead of including default_resource.h.
      	* src/c++98/globals_io.cc (__ioinit): Define here instead of
      	including ios_base_init.h.
      	* src/c++17/default_resource.h: Removed.
      	* src/c++98/ios_base_init.h: Removed.
      Unverified
      29eb6f8f
    • Jonathan Wakely's avatar
      libstdc++: Use init_priority attribute for tzdb globals [PR118811] · 99f57446
      Jonathan Wakely authored
      When linking statically to libstdc++.a (or to libstdc++_nonshared.a in
      the RHEL devtoolset compiler) there's a static initialization order
      problem where user code might be constructed before the
      std::chrono::tzdb_list globals, and so might try to use them after
      they've already been destroyed.
      
      Use the init_priority attribute on those globals so that they are
      initialized early. Since r15-7511-g4e7f74225116e7 we can disable the
      warnings for using a reserved priority using a diagnostic pragma.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/118811
      	* src/c++20/tzdb.cc (tzdb_list::_Node): Use init_priority
      	attribute on static data members.
      	* testsuite/std/time/tzdb_list/pr118811.cc: New test.
      Unverified
      99f57446
    • Patrick Palka's avatar
      libstdc++: Rename concat_view::iterator to ::_Iterator · 49bc1cf6
      Patrick Palka authored
      
      Even though 'iterator' is a reserved macro name, we can't use it as the
      name of this implementation detail type since it could introduce name
      lookup ambiguity in valid code, e.g.
      
        struct A { using iterator = void; }
        struct B : concat_view<...>, A { using type = iterator; };
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/ranges (concat_view::iterator): Rename to ...
      	(concat_view::_Iterator): ... this throughout.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      49bc1cf6
    • Patrick Palka's avatar
      libstdc++: Sync concat_view with final P2542 revision [PR115209] · 8543dc52
      Patrick Palka authored
      
      Our concat_view implementation is accidentally based off of an older
      revision of the paper, P2542R7 instead of R8.  As far as I can tell the
      only semantic change in the final revision is the relaxed constraints on
      the iterator's iter/sent operator- overloads, which this patch updates.
      
      This patch also simplifies the concat_view::end wording via C++26 pack
      indexing as per the final revision.  In turn we make the availability of
      this library feature conditional on __cpp_pack_indexing.  (Note pack
      indexing is implemented in GCC 15 and Clang 19).
      
      	PR libstdc++/115209
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/version.def (ranges_concat): Depend on
      	__cpp_pack_indexing.
      	* include/bits/version.h: Regenerate.
      	* include/std/ranges (__detail::__last_is_common): Remove.
      	(__detail::__all_but_first_sized): New.
      	(concat_view::end): Use C++26 pack indexing instead of
      	__last_is_common as per R8 of P2542.
      	(concat_view::iterator::operator-): Update constraints on
      	iter/sent overloads as per R8 of P2542.
      
      Reviewed-by: default avatarJonathan Wakely <jwakely@redhat.com>
      8543dc52
Loading