Bug#515949: Simple test case for gcc -ffast-math bug

Erik de Castro Lopo erikd at mega-nerd.com
Thu Mar 19 06:22:11 UTC 2009


The following test case shows the failure when compiling with -ffast-math
gives a different result than when compiling with out it.

More explanation in the comments at the top of the file.

Cheers,
Erik

/*
**	This file is in the Public Domain.
**
**	This program demonstrates a bug in the -ffast-math option of the gcc
**	armel compiler : gcc version 4.3.2 (Debian 4.3.2-1.1) 
**
**	This works as expected:
**
**	> gcc -Wall -O3 gcc-test.c -o gcc-test && ./gcc-test 
**	min :       0.0000    max :       0.0000
**
**	Compile with -ffast-math and things goes screwy.
**
**	> gcc -Wall -O3 -ffast-math gcc-test.c -o gcc-test && ./gcc-test 
**	min :   99999.0000    max :       0.0000
*/

#include <stdio.h>

#define	COUNT 	10

#define test_max(x,y)   ((x) <  (y) ? (y) : (x))
#define test_min(x,y)   ((x) >  (y) ? (y) : (x))

int
main (void)
{	/* C Standard says static data gets initialized to zero. */
	static float data [COUNT] ;
	float max = -99999.0, min = 99999.0 ;
	int k ;

	for (k = 0 ; k < COUNT ; k++)
	{	max = test_max (max, data [k]) ;
		min = test_min (min, data [k]) ;
		} ;

	printf ("min : %12.4f    max : %12.4f\n", min, max) ;

	return 0 ;
}






More information about the pkg-xiph-maint mailing list