[Bug c/48418] Bit shift operator >>=
ebotcazou at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Apr 2 21:07:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48418
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |ebotcazou at gcc dot
| |gnu.org
Resolution| |WONTFIX
--- Comment #1 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-04-02 21:06:47 UTC ---
> int x=1000;
> x>>=(sizeof(int)<<3);
>
> x is still 1000
The warning is clear:
t.cc: In function 'void foo()':
t.cc:4:22: warning: right shift count >= width of type
This invokes undefined behavior, any result is acceptable.
> In some cases bit shift operator used with variable (not constant) and compiler
> didnot show warning. My opinion is that result must be 0.
The compiler cannot warn about values computed only at run time. If the shift
amount is >= width of type at run time, this also invokes undefined behavior.
More information about the Gcc-bugs
mailing list