http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54089
--- Comment #26 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-11-09 10:48:17 UTC --- (In reply to comment #25) > Maybe the better solution would indeed be to add a > arith -> logical shift conversion pass before combine, or try to convert arith > shifts in the split pass after combine by looking at the data flow of the > shifted values. Another idea would be to extend the combine pass, so that whenever it internally converts arith -> logical shifts, it always checks the costs of the shift op, and if the logical shift is cheaper, always split out the logical shift.