http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54674
--- Comment #7 from William J. Schmidt <wschmidt at gcc dot gnu.org> 2012-09-24 18:35:41 UTC --- I'm working on a patch to avoid introducing a multiply by a pointer type, such as happened here. The interesting thing is that this doesn't look like a profitable transformation on most architectures. It appears that a multiply of two registers and an add of two registers may be given the same RTL cost in the SH family? It seems unlikely that those two operations have the same cost in practice, so it might be worth looking into whether the cost model for this target is fully implemented.