http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36884
--- Comment #7 from Steven Bosscher <steven at gcc dot gnu.org> 2012-10-15 07:47:27 UTC --- (In reply to comment #5) > Obviously, noce_try_sign_mask does it's work unconditionally and does > not take into account costs. It appears that it assumes that cheap > barrel shifter is available as on most 32-bit machines. This can probably be fixed using lshift_cheap_p. You should move lshift_cheap_p to optabs.c and use it in ifcvt.c to see if lshifts are cheap.