> Package: gcc-snapshot
> Version: 20060325-1
> 
> I get the following build failure of libsndfile with gcc 4.2
> 20060325-1 and 20060408-1.  Basically what happens is that abs()
> returns a negative number.
> 
>> Automatic build of libsndfile_1.0.15-2 on em64t by sbuild/amd64 1.112
> ...
>> ./lossy_comp_test wav_ima
>>     lcomp_test_short          : ima.wav ................. ok
>>     lcomp_test_int            : ima.wav .................
>> 
>> Line 757: Signal is all zeros (-27260928, 0xFE600800).
>> make[2]: *** [wav-tests] Error 1
> 
> The code basically does:
>     sum_abs = abs (sum_abs + abs (abs (data [k]) - 256)) ;
> in a loop.
> 
> With 4.2 snapshot I get negative numbers at some point, but with
> 4.0/4.1 I don't:
> 
> --- 1   2006-04-13 10:38:23.000000000 +0000
> +++ 2   2006-04-13 10:39:39.000000000 +0000
> @@ -110,6 +110,6 @@
>  1930663680 (data[k] = 72744960)
>  2009241088 (data[k] = 78577664)
>  2083755264 (data[k] = 74514432)
> --2131848192 (data[k] = 79364096)
> --2056350976 (data[k] = 75497472)
> +2131848192 (data[k] = 79364096)
> +2087621888 (data[k] = 75497472)

Looks like you are working near limits of 'int' type, and different valid 
optimizations could change order of calculation, either causing data 
overflow or not. Try using long long instead of int.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to