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.