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 ®set, > > + 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.