https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68112
--- Comment #4 from alalaw01 at gcc dot gnu.org --- Sure, but gcc exploits undefinedness of multiply, so rewriting shift to multiply is not equivalent in the general case :(. One way forward might be to make definedness of overflow a bit finer-grained (either on types, i.e. TYPE_OVERFLOW_DEFINED, or maybe as a property of chrecs?)