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.