------- Comment #2 from roger at eyesopen dot com 2006-07-06 19:17 ------- Investigating... I suspect that the SH backend's rtx_costs are parameterized incorrectly, such that a 64-bit shift by the constant 32, looks to be at least 32 times more expensive than a 64-bit addition. The middle-end then uses these numbers to select the appropriate code sequence to generate. Combine also doesn't both cleaning this up because it also the same invalid rtx_costs, and discovers than combining additions into shifts doesn't appear to be a win on this target.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28283