Problem with put_reg_into_stack
Jeffrey A Law
law@cygnus.com
Sat Dec 12 21:00:00 GMT 1998
In message < m0zp1l7-00038PC@ocean.lucon.org >you write:
> That is done on purpose since the x86 pattern doesn't allow memory
> to memory move. put_var_into_stack () calls put_reg_into_stack ()
> which turns
>
> (reg:QI 23)
>
> into
>
> (mem:QI (plus:SI (reg:SI 18)
> (const_int -2)))
>
> Now we get
>
> (set (mem:QI (plus:SI (reg:SI 18)
> (const_int -2)))
> (mem/s:QI (plus:SI (reg/v/u:SI 22)
> (const_int 4))))
>
> It is not a valid x86 pattern. I have no idea if it can be fixed
> easily. Maybe i386.md can be modified to fix it.
It is the responsibility of put_var_into_stack (or one of its subroutines)
to go back and fix up instructions that are made invalid by putting the
variable into the stack.
This is not something that should be fixed in the backend.
jeff
More information about the Gcc-bugs
mailing list