http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60111
--- Comment #2 from Oleg Endo <olegendo at gcc dot gnu.org> ---
In gen_ashift the assert
gcc_assert (satisfies_constraint_P27 (n_rtx));
fires, which means that the requested shift amount is not 1, 2, 8 or 16.
In gen_shifty_hi_op the function gen_ashift is invoked with the shift amount
values taken from the ext_ashl_lshr_seq table, which contains the allowed shift
amounts only.
I don't see a problem in sh.c. Maybe it's a indeed a problem of the host
compiler.