https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109276
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Status|NEW |ASSIGNED --- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Created attachment 54769 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54769&action=edit gcc13-pr109276.patch So, I wonder if for the local DImode temporaries we just couldn't ask for 32-bit alignment with -m32 -mpreferred-stack-alignment=2. I went through all the assign_386_stack_local calls which do or can pass DImode to it: - 2 spots in sync.md, both for a MEM scratch which I don't see a reason why it couldn't be just 32-bit aligned, they are during expansion, SLOT_TEMP - the SLOT_FLOATxFDI_387 use in the splitter used in this PR, that one also looks ok to be 32-bit aligned, during splitting - floatunssi<mode>2 also during expansion, SLOT_TEMP, this one I'm afraid really wants the slot to be 64-bit aligned - in ix86_expand_divmod_libfunc SLOT_TEMP, also during expansion, I think that one would be ok to use 32-bit aligned - scalar_chain::make_vector_copies and scalar_chain::convert_reg, during STV, SLOT_STV_TEMP, I think these want 64-bit alignment