[Bug c/54027] possible mis-optimization of signed left shift in c89 mode
joseph at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Thu Jul 19 15:08:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54027
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2012-07-19 15:07:54 UTC ---
On Thu, 19 Jul 2012, rguenth at gcc dot gnu.org wrote:
> Isn't it invoking undefined behavior by means of a signed integer overflow?
> (if shifts are not defined in terms of multiplies we may not internally
> fold x << 1 to x * 2).
Shifts in GCC are supposed to be defined as long as the shift amount is in
range, independent of the LHS, so it should not be folding like that.
(Although we document in implement-c.texi that this is subject to change
for signed left shift, I don't think changing it would be a particularly
good idea.)
More information about the Gcc-bugs
mailing list