------- Comment #1 from hp at gcc dot gnu dot org 2005-11-09 02:23 ------- I should mention that (plus:SI (sign_extend:SI (reg:HI 10 r10)) (reg:SI 1 r1)) is not a valid address, but (plus:SI (sign_extend:SI (sign_extend:SI (mem:HI (post_inc:SI (reg/f:SI 12 r12))))) (reg:SI 1 r1)) is; the problem seems related to reload choosing to reload inner MEM expressions replacing them with REG even though that's not needed and sometimes (i.e. for some targets) not valid. The "real" need is just to reload SRP. Or perhaps that SRP was chosen as part of an address in the first place. Or both. Or maybe we should just bail out and declare LEGITIMIZE_RELOAD_ADDRESS as a sometimes actually *necessary* macro rather than just for optimization, for certain cases, like when a MEM inside an expression can't be validly replaced with a REG.
-- hp at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2005-11-09 02:23:16 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24750