https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80131
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |segher at gcc dot gnu.org --- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> --- It may be best to do this in combine. If we have d = a << (b - c); and a << b does not truncate in the original mode, write it as d := (a << b) >> c; instead (and then see if it is actually cheaper, as combine always does).