https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81110

--- Comment #5 from Ada Liu <qian.liu at ingenic dot com> ---
(In reply to Andrew Pinski from comment #3)
> 65536*d[1] will overflow if d[1] is 65535 (0xffff).
> 
> If you did this instead it would be defined:
> 65536u*d[1]
> 
> as that is an unsigned * unsigned short so the unsigned short is implicitly
> converted into unsigned; in the original case, the unsigned short is
> implicitly converted into signed int.

But (65536*d[1]+d[0]) is convered to (unsigned long), should not be treated as
unsigned?

On gcc4.7.2 I can get expected result.

Reply via email to