Subject: Re: gcc bug: different results between -O0 and -O1
From: Danny Smith <[email-masked]>
To: gilles civario <[email-masked]>
Cc: [email-masked]
Date: Wed, 14 Nov 2001 07:13:49 +1100 (EST)

--- Mark Gordon <[email-masked]> wrote: > On Tue, 13 Nov 2001
07:57:57 +0100, gilles civario
> <[email-masked]> wrote:
> 
> >egor duda a écrit :
> >> Monday, 12 November, 2001 gilles civario [email-masked]
> 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.
> >

Have a look at the documentation for -mieee-fp switch.  Also -ffloat-store.
Then try your test case out with these switches,

In C99 standard there are additional functions to control fp rounding
modes.  In the meantime, for more control over fp precision and unordered
comparisons you could provide your own soft float library.

Danny

http://briefcase.yahoo.com.au - Yahoo! Briefcase
- Manage your files online.

--
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/