On Mon, Apr 28, 2025 at 2:04 AM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> On Wed, Apr 23, 2025 at 1:56 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> > +static void
> > +ix86_find_all_reg_uses_1 (HARD_REG_SET &regset,
> > +  rtx set, unsigned int regno,
> > +  auto_bitmap &worklist)
> > +{
> > +  rtx dest = SET_DEST (set);
> > +
> > +  if (!REG_P (dest))
> > +    return;
> > +
> > +  /* Reject non-Pmode modes.  */
> > +  if (GET_MODE (dest) != Pmode)
> > +    return;
> >
> > We can reject non-Pmode modes.
> >
> > OTOH, if the patch is OK for you, I think it is good to go forward.
> >
>
> Here is the v3 patch.  The only change I made is
>
>      rtx set = single_set (insn);
>       if (set)
>         {
>           ix86_find_all_reg_uses_1 (regset, set,
>                                     ref_regno, worklist);
>           continue;  <<<< I added.
>         }
>
>       rtx pat = PATTERN (insn);
>       if (GET_CODE (pat) != PARALLEL)
>         continue;
>
> OK for master?  Thanks.
>
> Don't assume that stack slots can only be accessed by stack or frame
> registers.  We first find all registers defined by stack or frame
> registers.  Then check memory accesses by such registers, including
> stack and frame registers.
>
> gcc/
>
> PR target/109780
> PR target/109093
> * config/i386/i386.cc (stack_access_data): New.
> (ix86_update_stack_alignment): Likewise.
> (ix86_find_all_reg_use_1): Likewise.
> (ix86_find_all_reg_use): Likewise.
> (ix86_find_max_used_stack_alignment): Also check memory accesses
> from registers defined by stack or frame registers.
>
> gcc/testsuite/
>
> PR target/109780
> PR target/109093
> * g++.target/i386/pr109780-1.C: New test.
> * gcc.target/i386/pr109093-1.c: Likewise.
> * gcc.target/i386/pr109780-1.c: Likewise.
> * gcc.target/i386/pr109780-2.c: Likewise.
> * gcc.target/i386/pr109780-3.c: Likewise.

OK.

Thanks,
Uros.

Reply via email to