[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GCC bug when -ffast-math is set on armel



On Thu, Mar 19, 2009 at 09:40:47AM +0000, Martin Guy wrote:
>   I thought I should mention this here too in case anyone else gets
> bitten by this armel-specific bug.

>    A GCC bug has just turned up that affects the arm-*-gnueabi
> architecture in gcc-4.[123]. While debugging libvorbisenc (which
> produces silent output files on armel), it turns out that when -O
> -ffast-math are set, GCC can produce incorrect code for the max(x,y)
> macro applied to floating point values.

Thanks for finding this out. Has a bug been filed to the GCC bugtracker?

>   Thanks to Erik de Castro Lopo for some incisive debugging and for
> producing a minimal example (should print "0 0" but doesn't)
> 
> /*
> **	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 ;
> }
> 
> Full details at http://bugs.debian.org/515949
> 
>      M
> 
> 
> -- 
> To UNSUBSCRIBE, email to debian-arm-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

-- 
"rm -rf" only sounds scary if you don't have backups


Reply to: