http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53249
--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> 2012-05-06 14:54:10 UTC --- Can you just use GET_MODE (mem) instead of targetm.addr_space.address_mode (MEM_ADDR_SPACE (mem)) when you change plus_constant (mem, offset)? At least, you should allow a backend to do plus_constant (GET_MODE (mem), mem, offset) instead of mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (mem)) plus_constant (mode, mem, offset)