http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57018



--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-22 
08:10:04 UTC ---

In bar in the more reduced testcase, the second rep_movsi insn uses before

reload argp as the source address of the 16 byte copy.  The argp to stack

pointer elimination offset is 16, 2x saved registers (%esi/%edi), caller's

address and 4 bytes of padding.  But the place where this argp is used is in

between fn argument allocation (sp = sp - 16) and deallocation (sp = sp + 16),

i.e. REG_ARGS_SIZE at that point is 16, thus the code really should have

leal 32(%esp), %esi instead of leal 16(%esp), %esi to point to the argp area.

Reply via email to