https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69984
--- Comment #2 from Edmar Wienskoski <edmar at freescale dot com> --- Right, but the variables A and B are *unsigned short*. Both A, and B are promoted to signed int, but max value is 65535. So, the result of A*B *can* be bigger than 31 bits. Thanks