[Bug tree-optimization/57860] New: wrong code for bitwise ops with long long literal on x86_64-linux (32-bit mode)
su at cs dot ucdavis.edu
gcc-bugzilla@gcc.gnu.org
Tue Jul 9 08:20:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57860
Bug ID: 57860
Summary: wrong code for bitwise ops with long long literal on
x86_64-linux (32-bit mode)
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: su at cs dot ucdavis.edu
The current gcc trunk mis-compiles the following code on x86_64-linux at -O2
and -O3 in 32-bit mode. This is a regression from 4.8.x.
$ gcc-trunk -v
gcc version 4.9.0 20130708 (experimental) [trunk revision 200751] (GCC)
$ gcc-trunk -m32 -O2 reduced.c
$ a.out
0
$ gcc-trunk -m32 -O3 reduced.c
$ a.out
0
$ gcc-trunk -m32 -O0 reduced.c
$ a.out
1
$ gcc-4.8 -m32 -O2 reduced.c
$ a.out
1
$
--------------------------------------------
int printf (const char *, ...);
int a, *b = &a, c, d, e, *f = &e, g, *h = &d, k[1] = {1};
int
foo (int p)
{
for (;; g++)
{
for (; c; c--);
*f = *h = p > ((0x1FFFFFFFFLL ^ a) & *b);
if (k[g])
return 0;
}
}
int
main ()
{
foo (1);
printf ("%d\n", d);
return 0;
}
More information about the Gcc-bugs
mailing list