------- Comment #7 from rguenth at gcc dot gnu dot org 2009-10-05 12:03 ------- A fix is to write uint32 res = ((uint32)(uint16)(cpu->gprs[12] >> 16) * (uint32)(uint16)(cpu->gprs[16] >> 16)); instead to force the multiplication in an unsigned type. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41577