From: GCC Administrator Date: Thu, 11 Jun 2020 00:16:45 +0000 (+0000) Subject: Daily bump. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec6ffbb919cdde26da3fbc949e65d564c70a3084;p=gcc.git Daily bump. --- diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 458989eda3c..3a385d68c50 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,22 @@ +2020-06-10 Martin Liska + + * gcc-changelog/git_commit.py: Fix renamed files in + parse_git_name_status. + * gcc-changelog/test_email.py: Add test for it. + +2020-06-10 Martin Liska + + * gcc-changelog/git_commit.py: Add more supported prefixes. + * gcc-changelog/test_email.py: Fix one flake8 error. + * gcc-changelog/test_patches.txt: Add tested for newly + supported prefixes. + +2020-06-10 Jonathan Wakely + + * gcc-changelog/git_commit.py (GitCommit.parse_changelog): + Improve error strings. + * gcc-changelog/test_email.py: Update expected errors. + 2020-06-09 Jonathan Wakely * gcc-changelog/git_email.py: Set exit status on error. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5f2b16a17a1..b0860738d04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,223 @@ +2020-06-10 Martin Sebor + + PR middle-end/95353 + PR middle-end/92939 + * builtins.c (inform_access): New function. + (check_access): Call it. Add argument. + (addr_decl_size): Remove. + (get_range): New function. + (compute_objsize): New overload. Only use compute_builtin_object_size + with raw memory function. + (check_memop_access): Pass new argument to compute_objsize and + check_access. + (expand_builtin_memchr, expand_builtin_strcat): Same. + (expand_builtin_strcpy, expand_builtin_stpcpy_1): Same. + (expand_builtin_stpncpy, check_strncat_sizes): Same. + (expand_builtin_strncat, expand_builtin_strncpy): Same. + (expand_builtin_memcmp): Same. + * builtins.h (check_nul_terminated_array): Declare extern. + (check_access): Add argument. + (struct access_ref, struct access_data): New structs. + * gimple-ssa-warn-restrict.c (clamp_offset): New helper. + (builtin_access::overlap): Call it. + * tree-object-size.c (decl_init_size): Declare extern. + (addr_object_size): Correct offset computation. + * tree-object-size.h (decl_init_size): Declare. + * tree-ssa-strlen.c (handle_integral_assign): Remove a call + to maybe_warn_overflow when assigning to an SSA_NAME. + +2020-06-10 Richard Biener + + * tree-vect-loop.c (vect_determine_vectorization_factor): + Skip debug stmts. + (_loop_vec_info::_loop_vec_info): Likewise. + (vect_update_vf_for_slp): Likewise. + (vect_analyze_loop_operations): Likewise. + (update_epilogue_loop_vinfo): Likewise. + * tree-vect-patterns.c (vect_determine_precisions): Likewise. + (vect_pattern_recog): Likewise. + * tree-vect-slp.c (vect_detect_hybrid_slp): Likewise. + (_bb_vec_info::_bb_vec_info): Likewise. + * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): + Likewise. + +2020-06-10 Richard Biener + + PR tree-optimization/95576 + * tree-vect-slp.c (vect_slp_bb): Skip leading debug stmts. + +2020-06-10 Haijian Zhang + + PR target/95523 + * config/aarch64/aarch64-sve-builtins.h + (sve_switcher::m_old_maximum_field_alignment): New member. + * config/aarch64/aarch64-sve-builtins.cc + (sve_switcher::sve_switcher): Save maximum_field_alignment in + m_old_maximum_field_alignment and clear maximum_field_alignment. + (sve_switcher::~sve_switcher): Restore maximum_field_alignment. + +2020-06-10 Richard Biener + + * tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector + of gimple * stmts. + (_stmt_vec_info::vec_stmts): Likewise. + (vec_info::stmt_vec_info_ro): New flag. + (vect_finish_replace_stmt): Adjust declaration. + (vect_finish_stmt_generation): Likewise. + (vectorizable_induction): Likewise. + (vect_transform_reduction): Likewise. + (vectorizable_lc_phi): Likewise. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not + allocate stmt infos for increments. + (vect_record_grouped_load_vectors): Adjust. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise. + (vectorize_fold_left_reduction): Likewise. + (vect_transform_reduction): Likewise. + (vect_transform_cycle_phi): Likewise. + (vectorizable_lc_phi): Likewise. + (vectorizable_induction): Likewise. + (vectorizable_live_operation): Likewise. + (vect_transform_loop): Likewise. + * tree-vect-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro. + * tree-vect-slp.c (vect_get_slp_vect_def): Adjust. + (vect_get_slp_defs): Likewise. + (vect_transform_slp_perm_load): Likewise. + (vect_schedule_slp_instance): Likewise. + (vectorize_slp_instance_root_stmt): Likewise. + * tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise. + (vect_finish_stmt_generation_1): Do not allocate a stmt info. + (vect_finish_replace_stmt): Do not return anything. + (vect_finish_stmt_generation): Likewise. + (vect_build_gather_load_calls): Adjust. + (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vect_create_vectorized_demotion_stmts): Likewise. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_scan_store): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + (vect_transform_stmt): Likewise. + * tree-vectorizer.c (vec_info::vec_info): Initialize + stmt_vec_info_ro. + (vec_info::replace_stmt): Copy over stmt UID rather than + unsetting/setting a stmt info allocating a new UID. + (vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro. + +2020-06-10 Aldy Hernandez + + * gimple-loop-versioning.cc (loop_versioning::name_prop::get_value): + Add stmt parameter. + * gimple-ssa-evrp.c (class evrp_folder): New. + (class evrp_dom_walker): Remove. + (execute_early_vrp): Use evrp_folder instead of evrp_dom_walker. + * tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter. + * tree-ssa-copy.c (copy_folder::get_value): Same. + * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in): + Pass stmt to get_value. + (substitute_and_fold_engine::replace_phi_args_in): Same. + (substitute_and_fold_dom_walker::after_dom_children): Call + post_fold_bb. + (substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New. + (substitute_and_fold_dom_walker::propagate_into_phi_args): New. + (substitute_and_fold_dom_walker::before_dom_children): Adjust to + call virtual functions for folding, pre_folding, and post folding. + Call get_value with PHI. Tweak dump. + * tree-ssa-propagate.h (class substitute_and_fold_engine): + New argument to get_value. + New virtual function pre_fold_bb. + New virtual function post_fold_bb. + New virtual function pre_fold_stmt. + New virtual function post_new_stmt. + New function propagate_into_phi_args. + * tree-vrp.c (vrp_folder::get_value): Add stmt argument. + * vr-values.c (vr_values::extract_range_from_stmt): Adjust dump + output. + (vr_values::fold_cond): New. + (vr_values::simplify_cond_using_ranges_1): Call fold_cond. + * vr-values.h (class vr_values): Add + simplify_cond_using_ranges_when_edge_is_known. + +2020-06-10 Martin Liska + + PR sanitizer/94910 + * asan.c (asan_emit_stack_protection): Emit + also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release + a stack frame. + +2020-06-10 Tamar Christina + + * config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul. + +2020-06-10 Richard Biener + + * tree-vect-data-refs.c (vect_vfa_access_size): Adjust. + (vect_record_grouped_load_vectors): Likewise. + * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise. + (vectorize_fold_left_reduction): Likewise. + (vect_transform_reduction): Likewise. + (vect_transform_cycle_phi): Likewise. + (vectorizable_lc_phi): Likewise. + (vectorizable_induction): Likewise. + (vectorizable_live_operation): Likewise. + (vect_transform_loop): Likewise. + * tree-vect-slp.c (vect_get_slp_defs): New function, split out + from overload. + * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove. + (vect_get_vec_def_for_operand): Likewise. + (vect_get_vec_def_for_stmt_copy): Likewise. + (vect_get_vec_defs_for_stmt_copy): Likewise. + (vect_get_vec_defs_for_operand): New function. + (vect_get_vec_defs): Likewise. + (vect_build_gather_load_calls): Adjust. + (vect_get_gather_scatter_ops): Likewise. + (vectorizable_bswap): Likewise. + (vectorizable_call): Likewise. + (vectorizable_simd_clone_call): Likewise. + (vect_get_loop_based_defs): Remove. + (vect_create_vectorized_demotion_stmts): Adjust. + (vectorizable_conversion): Likewise. + (vectorizable_assignment): Likewise. + (vectorizable_shift): Likewise. + (vectorizable_operation): Likewise. + (vectorizable_scan_store): Likewise. + (vectorizable_store): Likewise. + (vectorizable_load): Likewise. + (vectorizable_condition): Likewise. + (vectorizable_comparison): Likewise. + (vect_transform_stmt): Adjust and remove no longer applicable + sanity checks. + * tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize + STMT_VINFO_VEC_STMTS. + (vec_info::free_stmt_vec_info): Relase it. + * tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove. + (_stmt_vec_info::vec_stmts): Add. + (STMT_VINFO_VEC_STMT): Remove. + (STMT_VINFO_VEC_STMTS): New. + (vect_get_vec_def_for_operand_1): Remove. + (vect_get_vec_def_for_operand): Likewise. + (vect_get_vec_defs_for_stmt_copy): Likewise. + (vect_get_vec_def_for_stmt_copy): Likewise. + (vect_get_vec_defs): New overloads. + (vect_get_vec_defs_for_operand): New. + (vect_get_slp_defs): Declare. + +2020-06-10 Qian Chao + + PR tree-optimization/95569 + * trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE. + +2020-06-10 Martin Liska + + PR tree-optimization/92860 + * optc-save-gen.awk: Generate new function cl_optimization_compare. + * opth-gen.awk: Generate declaration of the function. + 2020-06-09 Michael Meissner * config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 51c41f0bb81..1094e86b516 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20200610 +20200611 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index f125850ccdb..b4258dccde0 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,212 @@ +2020-06-10 Arnaud Charlet + + * libgnat/s-aomoar.ads, libgnat/s-aomoar.adb: New files. + * libgnat/s-atopar.ads: Move... + * libgnat/s-aoinar.ads: Here. + * libgnat/s-atopar.adb: Move... + * libgnat/s-aoinar.adb: Here. + * impunit.adb: Update list of runtime files. + * Makefile.rtl (GNATRTL_NONTASKING_OBJS=): Adjust. + +2020-06-10 Arnaud Charlet + + * snames.ads-tmpl (Name_Characters_Assertion_Check, + Name_Containers_Assertion_Check, + Name_Interfaces_Assertion_Check, Name_IO_Assertion_Check, + Name_Numerics_Assertion_Check, Name_Strings_Assertion_Check, + Name_System_Assertion_Check): New constants. + * types.ads (Characters_Assertion_Check, + Containers_Assertion_Check, Interfaces_Assertion_Check, + IO_Assertion_Check, Numerics_Assertion_Check, + Strings_Assertion_Check, System_Assertion_Check): New constants. + (All_Checks): Update accordingly. + +2020-06-10 Ghjuvan Lacambre + + * exp_ch3.adb (Build_Equivalent_Record_Aggregate): Return Empty + if Etype of record component has predicates. + +2020-06-10 Arnaud Charlet + + * exp_ch3.adb (Build_Init_Statements): Implement the notion of + "require late initialization". + +2020-06-10 Eric Botcazou + + * sem_util.adb (Copy_And_Maybe_Dereference): Temporarily copy + the parent node of the original tree when dereferencing. + +2020-06-10 Ed Schonberg + + * sem_warn.adb (Warn_On_Overlapping_Actuals): Add a warning when + two actuals in a call overlap, both are composite types that may + be passed by reference, and only one of them is writable. + +2020-06-10 Eric Botcazou + + * exp_ch4.adb (Expand_N_In): Use an expression with actions to + insert the PE raise statement for the Unchecked_Union case. + +2020-06-10 Eric Botcazou + + * sem_ch4.adb (Analyze_Call): Use idiomatic condition. + * sem_res.adb (Resolve_Call): Remove obsolete code. + +2020-06-10 Eric Botcazou + + * sem_util.adb (Copy_And_Maybe_Dereference): New function. + (Build_Access_Record_Constraint): Use it to copy the prefix. + (Build_Actual_Array_Constraint): Likewise. + (Build_Actual_Record_Constraint): Likewise. + +2020-06-10 Bob Duff + + * sem_prag.adb (Invariant): Remove the pragma removing code. It + doesn't work to remove the pragma, because various flags are set + during Build_Invariant_Procedure_Declaration and + Build_Invariant_Procedure_Body that need to be set to avoid the + spurious warnings. + * exp_util.adb (Make_Invariant_Call): Avoid calling the + invariant-checking procedure if the body is empty. This is an + optimization. + +2020-06-10 Vasiliy Fofanov + + * doc/gnat_ugn/gnat_utility_programs.rst: Fix gnatmetric + switches description. + +2020-06-10 Arnaud Charlet + + * repinfo-input.ads, repinfo-input.adb, repinfo.adb, + repinfo.ads: Update header. + +2020-06-10 Eric Botcazou + + * exp_aggr.adb (In_Place_Assign_OK): Do not necessarily return + false for a type with discriminants. + (Convert_To_Assignments): Use Parent_Node and Parent_Kind more + consistently. In the in-place assignment case, first apply a + discriminant check if need be, and be prepared for a rewritten + aggregate as a result. + +2020-06-10 Arnaud Charlet + + * atree.adb, contracts.adb, debug.adb, freeze.adb, + repinfo-input.adb, repinfo.adb, sem_attr.adb, sem_ch10.adb, + sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb, + sem_ch8.adb, sem_ch9.adb, sem_disp.adb, sem_eval.adb, + sem_prag.adb: Remove more references to ASIS. + +2020-06-10 Arnaud Charlet + + * libgnat/s-secsta.adb (Round_Up): Fix typo in exception + message. + +2020-06-10 Piotr Trojanek + + * par-ch4.adb (P_Membership_Test): Fix typo in a grammar rule. + +2020-06-10 Piotr Trojanek + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove + expansion of First and Last attributes. + +2020-06-10 Piotr Trojanek + + * exp_attr.adb (Expand_N_Attribute_Reference): Remove folding + for Enum_Rep attribute. + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove + duplicated code for folding Enum_Rep attribute. + * sem_attr.adb (Eval_Attribute): Relax condition for folding + Enum_Rep attribute; previously dead code is now executed when + the attribute prefix is an enumeration literal; refine type in + processing of Enum_Val. + +2020-06-10 Javier Miranda + + * sem_ch3.adb (Analyze_Declarations): Adjust the machinery that + takes care of late body overriding of initialize, adjust, + finalize. Remove ASIS mode code. + +2020-06-10 Ed Schonberg + + * einfo.ads (Access_Subprogram_Wrapper): New attribute of + Subprogram_Type entities. Denotes subprogram constructed for + Access_To_Subprogram types that include pre- and postconditions. + * einfo.adb: Subprogram bodies for Access_Subprogram_Wrapper. + * exp_ch6.adb (Expand_Call): An indirect call through an + Access_To_subprogram that includes contracts is rewritten as a + call to the corresponding Access_ ubprogram_Wrapper. Handle + derived types that inherit contract from parent. + * sem_prag.adb (Build_Access_Subprogram_Wrapper): Build + subprogram declaration for subprogram that incorporates the + contracts of an Access_To_Subprogram type declaration. Build + corresponding body and attach it to freeze actions for type. + * sem_util.ads, sem_util.adb (Is_Access_Subprogram_Wrapper): + Utility that uses signature of the subprogram to determine + whether it is a generated wrapper for an Access_To_Subprogram + type. + +2020-06-10 Ghjuvan Lacambre + + * par-ch6.adb (P_Subprogram): Make sure the specification + belongs to a procedure. + +2020-06-10 Piotr Trojanek + + * sem_ch13.adb (All_Membership_Choices_Static): Assert an AST + property documented in sinfo.ads and simplify an excessive + condition. + +2020-06-10 Piotr Trojanek + + * exp_attr.adb (Expand_N_Attribute_Reference): Fix a copy-paste + mistake in comment. + * sem_res.adb (Flag_Effectively_Volatile_Objects): Fix a type in + the SPARK RM rule number. + * exp_ch4.adb, sem_util.adb: Fix style in single line comments. + +2020-06-10 Piotr Trojanek + + * sem_aux.ads, sem_aux.adb (Get_Low_Bound): Remove. + +2020-06-10 Arnaud Charlet + + * scn.adb (Determine_License): Remove. + +2020-06-10 Justin Squirek + + * exp_ch3.adb (Expand_N_Object_Declaration): Add condition to + handle processing of objects initialized by a call to a function + return an anonymous access type. + * exp_ch6.adb, exp_ch6.ads + (Has_Unconstrained_Access_Discriminants): Moved to sem_util.adb + (Needs_Result_Accessibility_Level): Moved to sem_util.adb + * sem_util.adb, sem_util.ads + (Has_Unconstrained_Access_Discriminants): Moved from exp_ch6.adb + (Needs_Result_Accessibility_Level): Moved from exp_ch6.adb + * sem_res.adb (Valid_Conversion): Add condition for the special + case where the operand of a conversion is the result of an + anonymous access type + +2020-06-10 Ghjuvan Lacambre + + * par-ch6.adb (P_Subprogram): Reject duplicate subprogram + declarations. + +2020-06-10 Eric Botcazou + + * exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context + of an if-expression and with a call written in prefixed notation. + +2020-06-10 Gary Dismukes + + * einfo.ads: Minor reformatting of a comment. + * exp_aggr.adb: Minor reformatting and a grammar correction. + * exp_attr.adb: Minor reformatting and a typo fix in some + comments. + * sem_ch12.adb: Fix three typos in comments. + 2020-06-09 Javier Miranda * sem_ch6.adb (New_Overloaded_Entity): Add missing call to check diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b9da4b9fa37..71085837dd3 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,13 @@ +2020-06-10 Martin Liska + + PR tree-optimization/92860 + * c-attribs.c (handle_optimize_attribute): + Save global options and compare it after parsing of function + attribute. + * c-pragma.c (opt_stack::saved_global_options): New field. + (handle_pragma_push_options): Save global_options. + (handle_pragma_pop_options): Compare them after pop. + 2020-06-09 Jakub Jelinek PR c/95580 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0fc815a81b0..c6448360f93 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,18 @@ +2020-06-10 Iain Sandoe + + PR c++/95440 + * call.c (add_candidates): Use vec_safe_length() for + testing the arguments list. + (build_new_method_call_1): Use vec_safe_is_empty() when + checking for an empty args list. + +2020-06-10 Marek Polacek + + PR c++/95562 + * parser.c (cp_parser_direct_declarator): Clear + CP_PARSER_FLAGS_DELAY_NOEXCEPT if the declarator kind is not + cdk_id. + 2020-06-09 Iain Sandoe PR c++/95137 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7a33e89b5fa..83751a117d9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,62 @@ +2020-06-10 Alexandre Oliva + + PR rtl-optimization/51447 + * gcc.c-torture/execute/pr51447.c (main): Preserve call-saved + register. + +2020-06-10 Iain Sandoe + + PR c++/95440 + * g++.dg/coroutines/pr95440.C: New test. + +2020-06-10 Martin Sebor + + PR middle-end/95353 + PR middle-end/92939 + * c-c++-common/Wstringop-truncation.c: Remove an xfail. + * gcc.dg/Warray-bounds-46.c: Remove a bogus warning. + * gcc.dg/Wrestrict-9.c: Disable -Wstringop-overflow. + * gcc.dg/Wstringop-overflow-12.c: Remove xfails. + * gcc.dg/Wstringop-overflow-28.c: Same. + * gcc.dg/builtin-stringop-chk-4.c: Same. + * gcc.dg/builtin-stringop-chk-5.c: Same. + * gcc.dg/builtin-stringop-chk-8.c: Same. + * gcc.dg/strlenopt-74.c: Avoid buffer overflow. + * gcc.dg/Wstringop-overflow-34.c: New test. + * gcc.dg/Wstringop-overflow-35.c: New test. + * gcc.dg/Wstringop-overflow-36.c: New test. + * gcc.dg/Wstringop-overflow-37.c: New test. + * gcc.dg/Wstringop-overflow-38.c: New test. + +2020-06-10 Richard Biener + + PR tree-optimization/95576 + * g++.dg/vect/pr95576.cc: New testcase. + +2020-06-10 Haijian Zhang + + PR target/95523 + * gcc.target/aarch64/sve/pr95523.c: New test. + +2020-06-10 Marek Polacek + + PR c++/95562 + * g++.dg/cpp0x/noexcept60.C: New test. + +2020-06-10 Aldy Hernandez + + * gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of + memmove happening later. + +2020-06-10 Tamar Christina + + * gcc.target/aarch64/asimd-mull-elem.c: New test. + +2020-06-10 Qian Chao + + PR tree-optimization/95569 + * gcc.dg/tm/pr95569.c: New test. + 2020-06-09 Michael Meissner * gcc.target/powerpc/clone3.c: New test for using 'future' with diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b068f4f0451..6f8e2f2e186 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,52 @@ +2020-06-10 Patrick Palka + + PR libstdc++/95578 + * include/bits/ranges_algo.h (__lexicographical_compare_fn): + Also check that the iterator and sentinel have the same type before + applying the unwrapping optimization for __normal_iterator. + Split the check into two, one for the first iterator/sentinel + pair and another for second iterator/sentinel pair. Remove uses + of __niter_base, and remove uses of std::move on a + __normal_iterator. + * include/bits/ranges_algobase.h (__equal_fn): Likewise. + (__copy_or_move): Likewise. Perform similar adjustments for + the reverse_iterator and move_iterator optimizations. Inline + the checks into the if-constexprs, and use using-declarations to + make them less visually noisy. Remove uses of __niter_wrap. + (__copy_or_move_backward): Likewise. + * testsuite/25_algorithms/copy/95578.cc: New test. + * testsuite/25_algorithms/copy_backward/95578.cc: New test. + * testsuite/25_algorithms/equal/95578.cc: New test. + * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test. + * testsuite/25_algorithms/move/95578.cc: New test. + * testsuite/25_algorithms/move_backward/95578.cc: New test. + +2020-06-10 François Dumont + Jonathan Wakely + + * include/bits/deque.tcc (__lex_cmp_dit): New. + (__lexicographical_compare_aux1): Define overloads for deque + iterators. + * include/bits/stl_algobase.h (__lexicographical_compare::__3way): + New static member function. + (__lexicographical_compare::__3way): Likewise. + (__lexicographical_compare::__lc): Use __3way. + (__lexicographical_compare_aux): Rename to + __lexicographical_compare_aux1 and declare overloads for deque + iterators. + (__lexicographical_compare_aux): Define new forwarding function + that calls __lexicographical_compare_aux1 and declare new overloads + for safe iterators. + (lexicographical_compare): Do not use __niter_base on + parameters. + * include/debug/safe_iterator.tcc + (__lexicographical_compare_aux): Define overloads for safe + iterators. + * testsuite/25_algorithms/lexicographical_compare/1.cc: Add + checks with random access iterators. + * testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc: + New test. + 2020-06-09 Jonathan Wakely * include/bits/stl_iterator.h (move_iterator::operator=): Define.