From: noer AT cygnus DOT com (Geoffrey Noer) Subject: Re: Bug with beta-16, floating point, and the optimizer 22 Apr 1997 18:15:04 -0700 Approved: cygnus DOT gnu-win32 AT cygnus DOT com Distribution: cygnus Message-ID: <199704221843.LAA06787.cygnus.gnu-win32@cirdan.cygnus.com> Content-Type: text Original-To: jdeifik AT weasel DOT com (Jeff Deifik) Original-Cc: gnu-win32 AT cygnus DOT com In-Reply-To: <2.2.32.19961107012403.00e21c24@pop.ni.net> from "Jeff Deifik" at Nov 6, 96 05:24:03 pm X-Mailer: ELM [version 2.4 PL23] Original-Sender: owner-gnu-win32 AT cygnus DOT com Your test case works fine under upcoming beta 18... -- Geoffrey Noer noer AT cygnus DOT com > The small, attached program demonstrates a bug with beta-16 gcc. > If the optimizer is set to '-O' the program executes correctly. > If the optimizer is set to '-O2' or '-O3' the program generates an > exception. > > Jeff Deifik jdeifik AT weasel DOT com turbo AT weasel DOT com > > /* y.c, demonstrates a bug with gnu-w32 beta 16 and the optimizer... */ > /* > To produce an exception say: > gcc -O2 -g -c y.c -o y.o > gcc y.o -lm -o yyy.exe > yyy > > To produce no exception say: > gcc -O -g -c y.c -o y.o > gcc y.o -lm -o yyy.exe > yyy > > */ > /* Written 11/06/96 by Jeff Deifik */ > > #include > #include > > typedef enum { False = 0, True = 1 } Boolean; > > float FLOAT_TO_ROUNDED_FLOAT(float); > int flo_close(double value,double f,double clo); > > int main(int argc, char *argv[]) > { > Boolean fail = False; > double d; > float f; > > d = rint(47); > if (!flo_close(47.0f,d,0.0001f)) > { (void)printf("47 %f\n",d); fail = True; } > > f = FLOAT_TO_ROUNDED_FLOAT(47.0); > if (!flo_close(47.0f,f,0.0001f)) > { (void)printf("47 %f\n",f); fail = True; } > > return 1; > } > > /* Value is the ideal number, f is what it really is.*/ > int flo_close(double value,double f,double clo) > { > return(((f+clo) >= value) && ((f-clo) <= value)); > } > > float FLOAT_TO_ROUNDED_FLOAT(float x) { return(floor(x+0.5)); } - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".