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.)

Reply via email to