gcc bug: different results between -O0 and -O1

gilles civario civario@mimosa.ceng.cea.fr
Thu Nov 1 19:59:00 GMT 2001


Hello.

egor duda a \xE9crit :
> Monday, 12 November, 2001 gilles civario civario@mimosa.ceng.cea.fr wrote:
> 
> gc> Wile developing a performance test program for gettimeofday resolution,
> gc> I found a strange behavior for gcc under cygwin with the -O flags.
> gc> Everywhere else with native compiler or with gcc, the program return constant
> gc> results, with or without optimization. (On Sun, Dec, Linux and Fujitsu)
> gc> Only with cygwin, the result is divided by 5000 from -O0 to -O1, both with
> gc> gcc version 2.95.3-5 (cygwin special) and gcc version 3.0.2.
> gc> But it shouldn't. Ok for a little increase, but not for 5000 !
> 
> you cannot reliably test float values for equality. you should rethink
> the logic of your boucle () function to get reliable results.

I'm not sure that the problem is mine.
First, consider that this little program works fine on a large variety of
different machine, event on Linux PCs.
But, I've tried a different test for my float values :
Instead of (t2 != t1), when I use ((t2-t1)>1.E-10), I got the same results
with -O1 than with -O0. Alleluia !!! But when I use ((t2-t1)>1.E-20), I've
got the initial results and the enormous differences between the two optimization
modes. Why such a comparison gives different results when changing an
optimization flag ? And only with Cygwin ?

Regards

Gilles Civario.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list