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