https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68112
--- Comment #2 from alalaw01 at gcc dot gnu.org --- So (a << CONSTANT) is not equivalent to a * (1<<CONSTANT), as the former is well-defined, whereas the latter invokes UB if bits would have been shifted off the far end.