On Mon, Jun 29, 2026 at 11:14 AM Hongtao Liu <[email protected]> wrote: > > On Sun, Jun 28, 2026 at 7:16 AM H.J. Lu <[email protected]> wrote: > > > > commit b41f96465190751561f6909e858604ceab00595b > > Author: H.J. Lu <[email protected]> > > Date: Mon Oct 20 16:14:34 2025 +0800 > > > > x86-64: Inline memmove with overlapping unaligned loads and stores. > > > > inlines memmove with overlapping unaligned and stores. For > unaligned loads and stores. > > >- } > >+ > >+ /* NB: This assert may fail without the fixes for > >+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125977 > >+ */ > >+ gcc_assert (min_size != max_size); > >+ } > > We already have gcc_assert in > r17-1928-g10f654cd90ffd58f91bf1ee8a0af762040346ab4, this one looks > redundant, when count_exp is not const_int, min_size must be not equal > to max_size.
This is insurance in case that someone backports this patch without PR 125977 fixes. I found https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125977 when I got FAIL: gfortran.dg/associate_32.f03 -O0 execution test FAIL: gfortran.dg/deferred_character_22.f90 -O0 execution test FAIL: gfortran.dg/deferred_character_16.f90 -O0 execution test FAIL: gfortran.dg/nested_array_constructor_2.f90 -O0 execution test FAIL: gfortran.dg/nested_array_constructor_3.f90 -O0 execution test FAIL: gfortran.dg/pr93814.f90 -O0 execution test FAIL: gfortran.dg/realloc_on_assign_25.f90 -O0 execution test FAIL: gfortran.dg/realloc_on_assign_5.f03 -O0 execution test FAIL: gfortran.dg/select_rank_5.f90 -O0 execution test FAIL: gfortran.dg/string_array_constructor_4.f90 -O0 execution test FAIL: gfortran.dg/transfer_simplify_9.f90 -O0 execution test with the change: @@ -10759,9 +10764,9 @@ ix86_expand_set_or_movmem (rtx operands[], bool iscpymem, bool issetmem) nullptr, count_mode, 1, more_2x_vec_label); - if (min_size == 0 || min_size <= 2 * move_max) + if (max_size != 1 && (min_size == 0 || min_size <= 2 * move_max)) { - /* Size >= MOVE_MAX and size <= 2 * MOVE_MAX. */ + /* Max size != 1, size >= MOVE_MAX and size <= 2 * MOVE_MAX. */ ix86_expand_n_overlapping_move_set_or_movmem (dst, src, memset_vals_p, destreg, srcreg, since max_size == min_size == 1 and count is a variable. > > ----- the commit ------------------------ > commit r17-1928-g10f654cd90ffd58f91bf1ee8a0af762040346ab4 > Author: H.J. Lu <[email protected]> > Date: Sat Jun 27 05:22:21 2026 +0800 > > Replace the min size rtx with GEN_INT (min_size) > > commit cbc56384029c9224280b0a1018fb9502797f243d > Author: H.J. Lu <[email protected]> > Date: Fri Jun 26 08:43:20 2026 +0800 > > determine_block_size: Set len_rtx to min size if min size == max size > > added > > + gcc_assert (min_size != max_size > + || rtx_equal_p (ops[2].value, ops[6].value)); > > But the number of operands isn't fixed and may be less than 7. Replace > the min size rtx with GEN_INT (min_size) to support different numbers of > operands. > ---------------cut end ---------------------- > > Others LGTM. > > > -- > BR, > Hongtao -- H.J.
