Mail Archives: cygwin/1996/11/06/19:22:15
--=====================_847358643==_
Content-Type: text/plain; charset="us-ascii"
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.
This is on a pentium 120, running windows nt-4.0 server, with service patch 1.
I have a fresh install of beta-16, with no old files lingering around.
I have specified gcc_exec_prefix, and I have a /tmp directory...
Jeff Deifik jdeifik AT weasel DOT com turbo AT weasel DOT com
--=====================_847358643==_
Content-Type: text/plain; charset="us-ascii"
/* 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 <stdio.h>
#include <math.h>
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)); }
--=====================_847358643==_--
-
For help on using this list, send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -