On Wed, Feb 12, 2025 at 3:16 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> On Wed, Feb 12, 2025 at 6:25 AM H.J. Lu <hjl.to...@gmail.com> wrote:
> >
> > 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.
>
> I wonder if this approach will also handle cases like e.g.:
>
>     lea    64(%rsp), %rbx
>     ...
>     movaps    16(%rbx, %rcx), %xmm0
>
> and:
>
>     movq    %rsp, %rax
>     ...
>     lea    64(%rax), %rbx
>     ...
>     movaps    16(%rbx), %xmm0
>
> ?

They should be handled by ix86_find_all_reg_use

 do
    {
      reg = bitmap_clear_first_set_bit (worklist);
      ix86_find_all_reg_use (stack_slot_access, reg, worklist);
    }
  while (!bitmap_empty_p (worklist));


> Thanks,
> uros.
>
>
> >
> > gcc/
> >
> > PR target/109780
> > PR target/109093
> > * config/i386/i386.cc (ix86_update_stack_alignment): New.
> > (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.
> >
> > --
> > H.J.



--
H.J.

Reply via email to