[Bug c/26719] New: Computed (integer) table changes with -O
kmshanah at disenchant dot net
gcc-bugzilla@gcc.gnu.org
Thu Mar 16 18:19:00 GMT 2006
System info: Debian Unstable, x86 (Transmeta Crusoe TM5800)
The following program produces different output when compiled with and without
optimisations. This didn't occur with gcc 4.0.3, it seems to be new with 4.1.0.
#include <stdio.h>
int table[32][256];
int main(void)
{
int i, j;
for (i = 0; i < 32; i++)
for (j = 0; j < 256; j++)
table[i][j] = ((signed char)j) * i;
for (i = 0; i < 10; i++)
printf("%10i %10i\n", table[i][5], table[i][132]);
return 0;
}
Compiling without optimisations, the output is as desired. With -O1 the output
changes. Here's how I can reproduce the problem:
$ gcc-4.1 -o example.O0 example.c
$ gcc-4.1 -O1 -o example.O1 example.c
$ ./example.O0
0 0
5 -124
10 -248
15 -372
20 -496
25 -620
30 -744
35 -868
40 -992
45 -1116
$ ./example.O1
0 0
5 132
10 264
15 396
20 528
25 660
30 792
35 924
40 1056
45 1188
$ gcc-4.1 -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,java,fortran,objc,obj-c++,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre --enable-mpfr
--with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.0 (Debian 4.1.0-0)
--
Summary: Computed (integer) table changes with -O
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kmshanah at disenchant dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26719
More information about the Gcc-bugs
mailing list