On Thu, Feb 1, 2024 at 3:18 PM Richard Biener <rguent...@suse.de> wrote: > > The following avoids re-using a register holding a pointer (and > thus might be REG_POINTER) for the result of a pointer difference > computation. That might confuse heuristics in (broken) RTL alias > analysis which relies on REG_POINTER indicating that we're > dealing with one. > > This alone doesn't fix anything. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, OK for trunk > and branches (as necessary)?
LGTM, also for branches. Thanks, Uros. > > Thanks, > Richard. > > PR target/113255 > * config/i386/i386-expand.cc > (expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves): > Use a new pseudo for the skipped number of bytes. > --- > gcc/config/i386/i386-expand.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc > index 0d817fc3f3b..26c48e8b0c8 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -8090,7 +8090,7 @@ > expand_set_or_cpymem_prologue_epilogue_by_misaligned_moves (rtx destmem, rtx > src > /* See how many bytes we skipped. */ > saveddest = expand_simple_binop (GET_MODE (*destptr), MINUS, saveddest, > *destptr, > - saveddest, 1, OPTAB_DIRECT); > + NULL_RTX, 1, OPTAB_DIRECT); > /* Adjust srcptr and count. */ > if (!issetmem) > *srcptr = expand_simple_binop (GET_MODE (*srcptr), MINUS, *srcptr, > -- > 2.35.3 >