[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

floor() may return incorrect value when optimized



To: gcc-gnats@gcc.gnu.org,debian-gcc@lists.debian.org
Subject: floor() may return incorrect value when optimized
From: karl
Reply-To: karl@tarantella.com
Cc:
X-send-pr-version: 3.113
X-GNATS-Notify:


>Submitter-Id: net
>Originator: Karl Burgess
>Organization: Tarantella, Inc.
>Confidential: no
>Synopsis: floor() may return incorrect value when optimized
>Severity: serious
>Priority: medium
>Category: optimization
>Class:  wrong-code
>Release: 3.0.4 (Debian testing/unstable)
>Environment:
System: Linux barrie.tarantella.com 2.4.12 #8 Thu Feb 21 11:48:06 UTC 2002
i686 unknown
Architecture: i686

host: i386-pc-linux-gnu
build: i386-pc-linux-gnu
target: i386-pc-linux-gnu
configured with:
../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/u
sr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as -
-with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-in
cluded-gettext --disable-checking --enable-threads=posix --enable-java-gc=bo
ehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux
>Description:

Under some circumstances the GCC optimizations triggered by -ffast-math and
-O cause the maths function floor() to return incorrect values.
The supplied test program calls the function floor() in two places with
the same input values, but gets different values returned.


The gcc output is as follows:

egcc -v -save-temps -Wall -MMD -O -ffast-math -ofloor_opt floor.c -lm
Reading specs from /usr/lib/gcc-lib/i386-linux/3.0.4/specs
Configured with:
../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/u
sr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as -
-with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-in
cluded-gettext --disable-checking --enable-threads=posix --enable-java-gc=bo
ehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux
Thread model: posix
gcc version 3.0.4
 /usr/lib/gcc-lib/i386-linux/3.0.4/cpp0 -lang-c -v -MM -MF
floor.dfloor_opt -MQ
floor_opt -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ 
-Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=
posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Wall -Acpu=i386 -A
machine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ floor.c floor.i
GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/i386-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc-lib/i386-linux/3.0.4/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i386-linux/3.0.4/cc1 -fpreprocessed
floor.i -quiet -dumpbase floor.c -O -Wall -version -ffast-math -o floor.s
GNU CPP version 3.0.4 (cpplib) (i386 Linux/ELF)
GNU C version 3.0.4 (i386-linux)
 compiled by GNU C version 3.0.4.
 as -V -Qy -o floor.o floor.s
GNU assembler version 2.12.90.0.1 (i386-linux) using BFD version 2.12.90.0.1
20020307 Debian/GNU Linux
 /usr/lib/gcc-lib/i386-linux/3.0.4/collect2 -m elf_i386 -dynamic-linker
/lib/ld-linux.so.2 -ofloor_opt
/usr/lib/gcc-lib/i386-linux/3.0.4/../../../crt1.o
/usr/lib/gcc-lib/i386-linux/3.0.4/../../../crti.o
/usr/lib/gcc-lib/i386-linux/3.0.4/crtbegin.o -L/usr/lib/gcc-lib/i386-linux/3
.0.4 -L/usr/lib/gcc-lib/i386-linux/3.0.4/../../..
floor.o -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/i386-linux/3.0.4/crtend.o
/usr/lib/gcc-lib/i386-linux/3.0.4/../../../crtn.o


When the test program is run (by typing ./floor_opt), it prints out the
following:

    Test failed! floor(-270.000000/90) == -4.000000
    Test worked! floor(-270.000000/90) == -3.000000

The first calculation involving floor() has returned -4.0 instead of
-3.0, which is incorrect. The second occurrence of floor() is correct.


>How-To-Repeat:

Here is the .i file for the test, compressed with gzip -9 and uuencode:

begin 664 floor.i.gz
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
A0#\\1W#</>VU)8DO'"+`_E=FVSJ.@G[^']=/L<$![```
`
end

>Fix:

I have a choice of workarounds:
If you don't compile with -ffast-math, then the test program works.
If you compile with -ffast-math, but not -O, then the program also works.
If you compile with -O -ffast-math -fno-inline, then the program also works.
If you compile with gcc 2.7.2.1, then the program works.
If you redefine floor() as a call to one of your own functions (eg.
myfloor),
which then calls the real floor(), then the program also works.

I have also noticed that the problem does not occur with gcc 3.0.3 on
Solaris 2.6



-- 
To UNSUBSCRIBE, email to debian-gcc-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: