http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53823
--- Comment #22 from John David Anglin <danglin at gcc dot gnu.org> 2012-08-12 14:30:12 UTC --- Created attachment 27994 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27994 Patch /* synth_mult does an `unsigned int' multiply. As long as the mode is less than or equal in size to `unsigned int' this doesn't matter. If the mode is larger than `unsigned int', then synth_mult works only if the constant value exactly fits in an `unsigned int' without any truncation. This means that multiplying by negative values does not work; results are off by 2^32 on a 32 bit machine. */