[gnu.gcc.bug] sun4-os4 1.34 double truncated to float

meyering@CS.UTEXAS.EDU (03/19/89)

gcc-1.34 (with -W patches posted by Paul Hudson)
config.gcc sun4-os4
Sun4/280 OS 4.0

The program below generates the output "1.0000002381857"
The correct result is simply "1" -- Any one of several minor
modifications to the code will cause it to give the correct result:

     1) remove the statement that assigns to y[i]
     2) make "x[i]" a scalar
     3) remove for-loop, and set i=0

main()
{
     double x[2],y[2];
     int i;
     for (i=0; i<1; i++) {
          x[i] = 1.0e0;
          printf("%.14g\n", x[i]);
          y[i] = 2.0e0;
     }
}
Jim Meyering    meyering@cs.utexas.edu

meyering@CS.UTEXAS.EDU (03/20/89)

I recently reported what appears to be a bug in gcc-1.34
where a double is mistakenly truncated to single-precision.
I didn't mention that this behavior occurs only when 
optimizing.

% gcc -v -O dbl-flt.c -o dbl-flt  
gcc version 1.34
 /p/lib/gcc-1.34/gcc-cpp -v -undef -D__GNUC__ -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__OPTIMIZE__ dbl-flt.c /tmp/cca00592.cpp
GNU CPP version 1.34
 /p/lib/gcc-1.34/gcc-cc1 /tmp/cca00592.cpp -quiet -dumpbase dbl-flt.c -O -version -o /tmp/cca00592.s
GNU C version 1.34 (sparc) compiled by GNU C version 1.34.
 as /tmp/cca00592.s -o dbl-flt.o
 ld -o dbl-flt -e start -dc -dp /lib/crt0.o dbl-flt.o /p/lib/gcc-1.34/gcc-gnulib -lc

Jim Meyering        meyering@cs.utexas.edu