summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Daily bump.releases/gcc-12GCC Administrator2023-05-183-1/+18
|
* c++: Don't try to initialize zero width bitfields in zero initialization ↵Jakub Jelinek2023-05-172-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [PR109868] My GCC 12 change to avoid removing zero-sized bitfields as they are important for ABI and are needed for layout compatibility traits apparently causes zero sized bitfields to be initialized in the IL, which at least in 13+ results in ICEs in the ranger which is upset about zero precision types. I think we could even avoid initializing other unnamed bitfields, but unfortunately !CONSTRUCTOR_NO_CLEARING doesn't mean in the middle-end clearing of padding bits and until we have some new flag that represents the request to clear padding bits, I think it is better to keep zeroing non-zero sized unnamed bitfields. In addition to skipping those fields, I have changed the logic how UNION_TYPEs are handled, the current code was a little bit weird in that e.g. if first non-static data member had error_mark_node type, we'd happily zero initialize the second non-static data member, etc. 2023-05-17 Jakub Jelinek <jakub@redhat.com> PR c++/109868 * init.cc (build_zero_init_1): Don't initialize zero-width bitfields. For unions only initialize the first FIELD_DECL. * g++.dg/init/pr109868.C: New test. (cherry picked from commit 78327cf06e6b65fc9c614622c98f6a3f3bfb7784)
* Daily bump.GCC Administrator2023-05-172-1/+14
|
* libstdc++: Fix src/c++17/memory_resource for H8 targets [PR107801]Jonathan Wakely2023-05-161-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | This fixes compilation failures for H8 multilibs. For the normal multilib (ILP16L32?), the chunk struct does not have the expected size, because uint32_t is type long and has alignment 4 (by default). This forces sizeof(chunk) to be 12 instead of the expected 10. We can fix that by using bitset::size_type instead of uint32_t, so that we only use a 16-bit size when size_t and pointers are 16-bit types. For the IL32P16 multilibs that use -mint32, int is wider than size_t and so arithmetic expressions involving size_t promote to int. This means we need some explicit casts back to size_t. libstdc++-v3/ChangeLog: PR libstdc++/107801 * src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from uint32_t to bitset::size_type. Adjust static assertion. (__pool_resource::_Pool::replenish): Cast to size_t after multiplication instead of before. (__pool_resource::_M_alloc_pools): Ensure both arguments to std::max have type size_t. (cherry picked from commit 75e562d2c4303d3918be9d1563284b0c580c5e45)
* Daily bump.GCC Administrator2023-05-164-1/+36
|
* c++: local class in nested generic lambda [PR109241]Jason Merrill2023-05-152-4/+21
| | | | | | | | | | | | | | | | | | | | In this testcase, the tree walk to look for bare parameter packs was confused by finding a type with no TREE_BINFO. But it should be fine that it's unset; we already checked for unexpanded packs at parse time. I also tried doing the partial instantiation of the local class, which is probably the long-term direction we want to go, but for stage 4 let's go with this safer change. PR c++/109241 gcc/cp/ChangeLog: * pt.cc (find_parameter_packs_r): Handle null TREE_BINFO. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/lambda-generic-local-class2.C: New test.
* testsuite/108776 - avoid c-c++-common/rotate-11.c FAILRichard Biener2023-05-151-1/+1
| | | | | | | | | | | On the branch ranger isn't powerful enough to handle some cases appearing with logical-op-non-short-circuit evaluating to false causing FAILs of the testcase for ppc64le and s390x. The following foces logical-op-non-short-circuit to true for this testcase on the branch. PR testsuite/108776 * c-c++-common/rotate-11.c: Add --param logical-op-non-short-circuit=1.
* Fix gcc.dg/vect/pr108950.cRichard Biener2023-05-151-1/+1
| | | | | | | | | | The following puts the dg-require-effective-target properly after the dg-do. * gcc.dg/vect/pr108950.c: Re-order dg-require-effective-target and dg-do. (cherry picked from commit 66e268eb063de32b232f6f006048e6f7bae6268f)
* x86: Add a new option -mdaz-ftz to enable FTZ and DAZ flags in MXCSR.liuhongt2023-05-156-6/+19
| | | | | | | | | | | | | | | | | | | | | | if (mdaz-ftz) link crtfastmath.o else if ((Ofast || ffast-math || funsafe-math-optimizations) && !mno-daz-ftz) link crtfastmath.o else Don't link crtfastmath.o gcc/ChangeLog: * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o whenever -mdaz-ftz is specified. Don't link crtfastmath.o when -mno-daz-ftz is specified. * config/i386/darwin.h (ENDFILE_SPEC): Ditto. * config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC): Ditto. * config/i386/mingw32.h (ENDFILE_SPEC): Ditto. * config/i386/i386.opt (mdaz-ftz): New option. * doc/invoke.texi (x86 options): Document mftz-daz.
* Daily bump.GCC Administrator2023-05-151-1/+1
|
* Daily bump.GCC Administrator2023-05-141-1/+1
|
* Daily bump.GCC Administrator2023-05-131-1/+1
|
* Daily bump.GCC Administrator2023-05-122-1/+9
|
* syscall: add prlimitIan Lance Taylor2023-05-111-0/+8
| | | | | As of https://go.dev/cl/476695 golang.org/x/sys/unix can call syscall.prlimit, so we need such a function in libgo.
* libstdc++: Fix std::any pretty printerJonathan Wakely2023-05-111-3/+28
| | | | | | | | | | | | | | | | | | | | | | | | The recent changes to FilteringTypePrinter affect the result of gdb.lookup_type('std::string') in StdExpAnyPrinter, causing it to always return the std::__cxx11::basic_string specialization. This then causes a gdb.error exception when trying to lookup the std::any manager type for a specialization using that string, but that manager was never instantiated in the program. This causes FAILs when running the tests with -D_GLIBCXX_USE_CXX11_ABI=0: FAIL: libstdc++-prettyprinters/libfundts.cc print as FAIL: libstdc++-prettyprinters/libfundts.cc print as The ugly solution used in this patch is to repeat the lookup for every type that std::string could be a typedef for, and hope it only works for one of them. libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py (StdExpAnyPrinter): Make expansion of std::string in manager name more robust. (cherry picked from commit 3c54805d03ac1bcc3d8547ffb5e6c4e1f301a7a2)
* Daily bump.GCC Administrator2023-05-112-1/+8
|
* Avoid g++.dg/torture/pr106922.C FAIL with the pre-C++11 ABIRichard Biener2023-05-101-0/+9
| | | | | | | | | | The following forces the g++.dg/torture/pr106922.C testcase to use the C++11 libstdc++ ABI and checks whether that worked. gcc/testsuite/ * g++.dg/torture/pr106922.C: Force _GLIBCXX_USE_CXX11_ABI to 1. (cherry picked from commit a056a9868e6ecab24b0b7e4e12e846097b8c8fb0)
* Daily bump.GCC Administrator2023-05-106-1/+136
|
* libffi: fix handling of homogeneous float128 structs (#689)Dan Horák2023-05-091-1/+1
| | | | | | | | | | | | | | | | | If there is a homogeneous struct with float128 members, they should be copied to vector register save area. The current code incorrectly copies only the value of the first member, not increasing the pointer with each iteration. Fix this. Merged from upstream libffi commit: 464b4b66e3cf3b5489e730c1466ee1bf825560e0 2023-05-03 Dan Horák <dan@danny.cz> libffi/ PR libffi/109447 * src/powerpc/ffi_linux64.c (ffi_prep_args64): Update arg.f128 pointer. (cherry picked from commit 043550bceea7881163bba5d8a0486bb100a05809)
* c++: NTTP constraint depending on outer parms [PR109160]Patrick Palka2023-05-093-11/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Here we're crashing during satisfaction for the NTTP 'C<B> auto V' ultimately because convert_template_argument / unify don't pass all outer template arguments to do_auto_deduction, and during satisfaction we need to know all arguments. While these callers do pass some outer arguments, they are only sufficient to properly substitute the (level-lowered) 'auto' and are not necessarily the entire set. Fortunately it seems these callers have access to the full set of outer arguments via convert_template_argument's 'in_decl' parameter and unify's 'tparms' parameter. So this patch adds a new parameter to do_auto_deduction, used only during adc_unify deduction, through which these callers can pass the enclosing (partially instantiated) template and from which do_auto_deduction can obtain _all_ outer template arguments for sake of satisfaction. This patch also ensures that the 'in_decl' argument passed to coerce_template_parms is always a TEMPLATE_DECL, which in turn allows us to pass it as-is to do_auto_deduction; the only coerce_template_parms caller that needed adjustment was tsubst_decl it seems. PR c++/109160 gcc/cp/ChangeLog: * cp-tree.h (do_auto_deduction): Add defaulted tmpl parameter. * pt.cc (convert_template_argument): Pass 'in_decl' as 'tmpl' to do_auto_deduction. (tsubst_decl) <case VAR_/TYPE_DECL>: Pass 'tmpl' instead of 't' as 'in_decl' to coerce_template_parms. (unify) <case TEMPLATE_PARM_INDEX>: Pass TPARMS_PRIMARY_TEMPLATE as 'tmpl' to do_auto_deduction. (do_auto_deduction): Document default arguments. Rename local variable 'tmpl' to 'ctmpl'. Use 'tmpl' to obtain a full set of template arguments for satisfaction in the adc_unify case. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-placeholder12.C: New test. (cherry picked from commit a5de246535db1b4fdc61287f27de0fdd074fc4b3)
* testsuite: Add further testcase for already fixed PR [PR109778]Jakub Jelinek2023-05-092-0/+29
| | | | | | | | | | | | | | I came up with a testcase which reproduces all the way to r10-7469. LTO to avoid early inlining it, so that ccp handles rotates and not shifts before they are turned into rotates. 2023-05-09 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/109778 * gcc.dg/lto/pr109778_0.c: New test. * gcc.dg/lto/pr109778_1.c: New file. (cherry picked from commit c2cf2dc988eb93551fa1c01d3f8d73ef21f39dc5)
* tree-ssa-ccp, wide-int: Fix up handling of [LR]ROTATE_EXPR in bitwise ccp ↵Jakub Jelinek2023-05-093-6/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [PR109778] The following testcase is miscompiled, because bitwise ccp2 handles a rotate with a signed type incorrectly. Seems tree-ssa-ccp.cc has the only callers of wi::[lr]rotate with 3 arguments, all other callers just rotate in the right precision and I think work correctly. ccp works with widest_ints and so rotations by the excessive precision certainly don't match what it wants when it sees a rotate in some specific bitsize. Still, if it is unsigned rotate and the widest_int is zero extended from width, the functions perform left shift and logical right shift on the value and then at the end zero extend the result of left shift and uselessly also the result of logical right shift and return | of that. On the testcase we the signed char rrotate by 4 argument is CONSTANT -75 i.e. 0xffffffff....fffffb5 with mask 2. The mask is correctly rotated to 0x20, but because the 8-bit constant is sign extended to 192-bit one, the logical right shift by 4 doesn't yield expected 0xb, but gives 0xfffffffffff....ffffb, and then return wi::zext (left, width) | wi::zext (right, width); where left is 0xfffffff....fb50, so we return 0xfb instead of the expected 0x5b. The following patch fixes that by doing the zero extension in case of the right variable before doing wi::lrshift rather than after it. Also, wi::[lr]rotate widht width < precision always zero extends the result. I'm afraid it can't do better because it doesn't know if it is done for an unsigned or signed type, but the caller in this case knows that very well, so I've done the extension based on sgn in the caller. E.g. 0x5b rotated right (or left) by 4 with width 8 previously gave 0xb5, but sgn == SIGNED in widest_int it should be 0xffffffff....fffb5 instead. 2023-05-09 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/109778 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on wi::zext (x, width) rather than x if width != precision, rather than using wi::zext (right, width) after the shift. * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results of wi::lrotate or wi::rrotate. * gcc.c-torture/execute/pr109778.c: New test. (cherry picked from commit a8302d2a4669984c7c287d12ef5b37cde6699c80)
* Fix ICE related to implicit access attributes for VLA arguments [PR105660]Martin Uecker2023-05-094-12/+43
| | | | | | | | | | | | | | | | | | | | | When constructing the specifier string when merging an access attribute that encodes information about VLA arguments, the string was constructed in random order by iterating through a hash table. Fix this by iterating though the list of arguments. gcc/c-family/Changelog: PR c/105660 * c-attribs.cc (append_access_attr): Use order of arguments when construction string. (append_access_attr_idxs): Rename and make static. * c-warn.cc (warn_parm_array_mismatch): Add assertion. gcc/testsuite/ChangeLog: PR c/105660 * gcc.dg/pr105660-1.c: New test. * gcc.dg/pr105660-2.c: New test. (cherry picked from commit 3057d7928c0dbc78dbf748c9621ccd102e06beee)
* rs6000: Guard power9-vector for vsx_scalar_cmp_exp_qp_* [PR108758]Kewen Lin2023-05-091-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | __builtin_vsx_scalar_cmp_exp_qp_{eq,gt,lt,unordered} used to be guarded with condition TARGET_P9_VECTOR before new bif framework was introduced (r12-5752-gd08236359eb229), since r12-5752 they are placed under stanza ieee128-hw, that is to check condition TARGET_FLOAT128_HW, it caused test case float128-cmp2-runnable.c to fail at -m32 as the condition TARGET_FLOAT128_HW isn't satisified with -m32. By checking the commit history, I didn't see any notes on why this condition change on them was made, so this patch is to move these bifs from stanza ieee128-hw to stanza power9-vector as before. PR target/108758 gcc/ChangeLog: * config/rs6000/rs6000-builtins.def (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt __builtin_vsx_scalar_cmp_exp_qp_lt, __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw to power9-vector. (cherry picked from commit 33a44e3aa81f9fdf8f6b87018abd4c664e545b53)
* rs6000: Fix predicate for const vector in sldoi_to_mov [PR109069]Kewen Lin2023-05-096-3/+218
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As PR109069 shows, commit r12-6537-g080a06fcb076b3 which introduces define_insn_and_split sldoi_to_mov adopts easy_vector_constant for const vector of interest, but it's wrong since predicate easy_vector_constant doesn't guarantee each byte in the const vector is the same. One counter example is the const vector in pr109069-1.c. This patch is to introduce new predicate const_vector_each_byte_same to ensure all bytes in the given const vector are the same by considering both int and float, meanwhile for the constants which don't meet easy_vector_constant we need to gen a move instead of just a set, and uses VECTOR_MEM_ALTIVEC_OR_VSX_P rather than VECTOR_UNIT_ALTIVEC_OR_VSX_P for V2DImode support under VSX since vector long long type of vec_sld is guarded under stanza vsx. PR target/109069 gcc/ChangeLog: * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate easy_vector_constant with const_vector_each_byte_same, add handlings in preparation for !easy_vector_constant, and update VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P. * config/rs6000/predicates.md (const_vector_each_byte_same): New predicate. gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr109069-1.c: New test. * gcc.target/powerpc/pr109069-2-run.c: New test. * gcc.target/powerpc/pr109069-2.c: New test. * gcc.target/powerpc/pr109069-2.h: New test. (cherry picked from commit fd75f6ae5625f087980ff4a7e76cc6284cfe5a3e)
* c++: non-templated friends [PR105852]Jason Merrill2023-05-083-8/+33
| | | | | | | | | | | | | | | | | | | | The previous patch for 105852 avoids copying DECL_TEMPLATE_INFO from a non-templated friend, but it really shouldn't have it in the first place. PR c++/106740 PR c++/105852 gcc/cp/ChangeLog: * decl.cc (duplicate_decls): Change non-templated friend check to an assert. * pt.cc (tsubst_function_decl): Don't set DECL_TEMPLATE_INFO on non-templated friends. (tsubst_friend_function): Adjust. gcc/testsuite/ChangeLog: * g++.dg/template/friend78.C: New test.
* Daily bump.GCC Administrator2023-05-091-1/+1
|
* Bump BASE-VERRichard Biener2023-05-081-1/+1
| | | | * BASE-VER: Bump to 12.3.1.
* Update ChangeLog and version files for releasereleases/gcc-12.3.0Richard Biener2023-05-0855-1/+217
|
* Daily bump.GCC Administrator2023-05-081-1/+1
|
* Daily bump.GCC Administrator2023-05-071-1/+1
|
* Daily bump.GCC Administrator2023-05-061-1/+1
|
* Daily bump.GCC Administrator2023-05-053-1/+26
|
* Revert "c++: DMI in template with virtual base [PR106890]"Jason Merrill2023-05-042-32/+0
| | | | | | | | The PR106890 patch caused PR109666; for 12.3 let's just revert it. PR c++/109666 This reverts commit 94569d91bd4c604da755b4aae84256e7fe21196a.
* tree-optimization/109724 - new testcaseRichard Biener2023-05-041-0/+32
| | | | | | | | | | The following adds a testcase for PR109724 which was caused by backporting r13-2375-gbe1b42de9c151d and fixed by r11-199-g2b42509f8b7bdf. PR tree-optimization/109724 * g++.dg/torture/pr109724.C: New testcase. (cherry picked from commit ee99aaae4aeecd55f1d945a959652cf07e3b2e9e)
* Daily bump.GCC Administrator2023-05-043-1/+28
|
* libstdc++: Set _M_string_length before calling _M_dispose() [PR109703]Kefu Chai2023-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This always sets _M_string_length in the constructor for ranges of input iterators, such as stream iterators. We copy from the source range to the local buffer, and then repeatedly reallocate a larger one if necessary. When disposing the old buffer, _M_is_local() is used to tell if the buffer is the local one or not (and so must be deallocated). In addition to comparing the buffer address with the local buffer, _M_is_local() has an optimization hint so that the compiler knows that for a string using the local buffer, there is an invariant that _M_string_length <= _S_local_capacity (added for PR109299 via r13-6915-gbf78b43873b0b7). But we failed to set _M_string_length in the constructor taking a pair of iterators, so the invariant might not hold, and __builtin_unreachable() is reached. This causes UBsan errors, and potentially misoptimization. To ensure the invariant holds, _M_string_length is initialized to zero before doing anything else, so that _M_is_local() doesn't see an uninitialized value. This issue only surfaces when constructing a string with a range of input iterator, and the uninitialized _M_string_length happens to be greater than _S_local_capacity, i.e., 15 for the std::string specialization. libstdc++-v3/ChangeLog: PR libstdc++/109703 * include/bits/basic_string.h (basic_string(Iter, Iter, Alloc)): Initialize _M_string_length. Signed-off-by: Kefu Chai <kefu.chai@scylladb.com> Co-authored-by: Jonathan Wakely <jwakely@redhat.com> (cherry picked from commit cbf6c7a1d16490a1e63e9a5ce00e9a5c44c4c2f2)
* libstdc++: Strip absolute paths from files shown in Doxygen docsJonathan Wakely2023-05-031-1/+2
| | | | | | | | | | | | This avoids showing absolute paths from the expansion of @srcdir@/libsupc++/ in the doxygen File List view. libstdc++-v3/ChangeLog: * doc/doxygen/user.cfg.in (STRIP_FROM_PATH): Remove prefixes from header paths. (cherry picked from commit 975e8e836ead0e9055a125a2a23463db5d847cb3)
* c++: Fix up VEC_INIT_EXPR gimplification after r12-7069Jakub Jelinek2023-05-031-10/+10
| | | | | | | | | | | | | | | | | | | | During patch backporting, I've noticed that while most cp_walk_tree calls with cp_fold_r callback callers were changed from &pset to cp_fold_data &data, the VEC_INIT_EXPR gimplifications has not, so it still passes just address of a hash_set<tree> and so if during the folding we ever touch data->genericize, we use uninitialized data there. The following patch changes it to do the same thing as cp_fold_function because the VEC_INIT_EXPR gimplifications will happen on function bodies only. 2023-05-03 Jakub Jelinek <jakub@redhat.com> * cp-gimplify.cc (cp_fold_data): Move definition earlier. (cp_gimplify_expr): Pass address of genericize = true constructed data rather than &pset to cp_walk_tree with cp_fold_r. (cherry picked from commit 8d193b12d6f07ae0196db8296a49c881c1638c01)
* Daily bump.GCC Administrator2023-05-031-1/+1
|
* Daily bump.GCC Administrator2023-05-021-1/+1
|
* Daily bump.GCC Administrator2023-05-013-1/+37
|
* c++, coroutines: Fix block nests when the function has no top-level bind.Iain Sandoe2023-04-301-0/+4
| | | | | | | | | | | | | | | | | | | When the function contains no local vars and also no nested scopes, there is no top-level bind expression. Because the rewritten coroutine body will require both local vars and contain nested scopes, we add a bind expression to such functions. When this was done the necessary scope blocks were omitted which leads to disconnected function content. Fixed by adding a new block to the added bind expression. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/cp/ChangeLog: * coroutines.cc (coro_rewrite_function_body): Ensure that added bind expressions have scope blocks. (cherry picked from commit a8d7631d333c22e38a067d32d11fd2b60cf1d960)
* c++,coroutines: Stabilize names of promoted slot vars [PR101118].Iain Sandoe2023-04-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | When we need to 'promote' a value (i.e. store it in the coroutine frame) it is given a frame entry name. This was based on the DECL_UID for slot vars. However, when LTO is used, the names from multiple TUs become visible at the same time, and the DECL_UIDs usually differ between units. This leads to a "ODR mismatch" warning for the frame type. The fix here is to use the current promoted temporaries count to produce the name, this is stable between TUs and computed per coroutine. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/101118 gcc/cp/ChangeLog: * coroutines.cc (flatten_await_stmt): Use the current count of promoted temporaries to build a unique name for the frame entries. (cherry picked from commit fc4cde2e6aa4d6ebdf7f70b7b4359fb59a1915ae)
* coroutines: Build pointer initializers with nullptr_node [PR107768]Andrew Pinski2023-04-302-3/+29
| | | | | | | | | | | | | | | | | | | | | The PR reports that using integer_zero_node triggers a warning for -Wzero-as-null-pointer-constant which comes from compiler-generated code so makes no sense to the end user. Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk> PR c++/107768 gcc/cp/ChangeLog: * coroutines.cc (coro_rewrite_function_body): Initialize pointers from nullptr_node. (morph_fn_to_coro): Likewise. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr107768.C: New test. (cherry picked from commit 0b1d66658ecdcc3d9251641a0b902b4c73ace303)
* Daily bump.GCC Administrator2023-04-302-1/+45
|
* libstdc++: Implement LWG 3904 change to lazy_split_view's iteratorPatrick Palka2023-04-292-1/+18
| | | | | | | | | | | libstdc++-v3/ChangeLog: * include/std/ranges (lazy_split_view::_OuterIter::_OuterIter): Propagate _M_trailing_empty in the const-converting constructor as per LWG 3904. * testsuite/std/ranges/adaptors/lazy_split.cc (test12): New test. (cherry picked from commit aa65771427d32299cffecea64cbb766411aa8faf)
* libstdc++: Implement P2520R0 changes to move_iterator's iterator_conceptPatrick Palka2023-04-293-1/+57
| | | | | | | | | | | | | | libstdc++-v3/ChangeLog: * include/bits/stl_iterator.h (move_iterator::_S_iter_concept): Define. (__cpp_lib_move_iterator_concept): Define for C++20. (move_iterator::iterator_concept): Strengthen as per P2520R0. * include/std/version (__cpp_lib_move_iterator_concept): Define for C++20. * testsuite/24_iterators/move_iterator/p2520r0.cc: New test. (cherry picked from commit 2b204accd07a3185b58b1edc6e9b019472857a5d)
* libstdc++: Make views::single/iota/istream SFINAE-friendly [PR108362]Patrick Palka2023-04-295-10/+65
| | | | | | | | | | | | | | | | | | | | | | | PR libstdc++/108362 libstdc++-v3/ChangeLog: * include/std/ranges (__detail::__can_single_view): New concept. (_Single::operator()): Constrain it. Move [[nodiscard]] to the end of the function declarator. (__detail::__can_iota_view): New concept. (_Iota::operator()): Constrain it. Move [[nodiscard]] to the end of the function declarator. (__detail::__can_istream_view): New concept. (_Istream::operator()): Constrain it. Move [[nodiscard]] to the end of the function declarator. * testsuite/std/ranges/iota/lwg3292_neg.cc: Prune "in requirements" diagnostic. * testsuite/std/ranges/iota/iota_view.cc (test07): New test. * testsuite/std/ranges/istream_view.cc (test08): New test. * testsuite/std/ranges/single_view.cc (test07): New test. (cherry picked from commit 95827e1b9f7d5dd5a697bd60292e3876a7e8c15c)
* Daily bump.GCC Administrator2023-04-294-1/+60
|