This patch http://gcc.gnu.org/ml/gcc-patches/2005-03/msg01296.html caused [hjl@gnu-31 longlong-2]$ cat y.c #include <stdio.h> extern void abort (); unsigned long long xh = 1ull; int main () { unsigned long long yh = 0xffffffffull; unsigned long long z = xh * yh; unsigned long long i = 1ull * yh; printf ("%llx\n", i); printf ("%llx\n", z); if (z != i) abort (); } [hjl@gnu-31 longlong-2]$ gcc -m32 -O y.c [hjl@gnu-31 longlong-2]$ ./a.out ffffffff ffffffffffffffff Aborted [hjl@gnu-31 longlong-2]$ A possible patch is at http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00128.html
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2009-1376.html