I can't seem to find the equivalent of bugzilla for Mandrake so I'm
reporting this here with the hopes it will make it back to appropriate
parties.

I'm a developer in the process of packaging Perl 5.6.0 for another
distribution. I'm all for optimization as long as the code still passes its
tests.  With this in mind I tried Mandrake's 7.2 IMHO aggressive i586
optimization flags for my build of Perl 5.6.0. After a lot of debugging I
found out that the -ffast-math flag causes Perl to fail at least 7 subtests
of the op/cmp.t test of the Perl regression tests.

I tested perl-5.600-17mdk on a Mandrake 7.2 and it fails the same tests.

FYI from GCC man page:
-ffast-math "This option allows GCC to violate some ANSI or IEEE
rules/specifications in the interest of optimizing code for speed."

This led me to wonder what else is slightly undetectably broken as a result
of -ffast-math. Having seen this, I certainly wouldn't want it on for every
package as it is it seems to be in Mandrake.

I have forced gcc not to use fast-math in my RPM by appending a
-fno-fast-math to the optimization flags as below. I suggest you should do
the same and unless you can assess the damage -ffast-math is causing to
other programs (I certainly can't) I would suggest removing it from your
global options.

%build
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
sh Configure -des -Doptimize="$RPM_OPT_FLAGS -fno-fast-math" \

Name        : perl                         Relocations: (not relocateable)
Version     : 5.600                             Vendor: MandrakeSoft
Release     : 17mdk                         Build Date: Sat Sep 30 12:25:56 
2000Install date: Sat Nov 25 19:41:42 2000      Build Host: debris.mandrakesoft.com
Group       : Development/Perl              Source RPM: perl-5.600-17mdk.src.rpmSize   
     : 13907113                         License: GPL
Packager    : Pixel <[EMAIL PROTECTED]>
Summary     : The Perl programming language.

Default i586 optimization flags from MDK7.2 rpmrc:
i586 -O3 -fomit-frame-pointer -pipe -mcpu=pentiumpro -march=i586 -ffast-math

Test process:
cd /usr/src/RPM/BUILD/perl-5.6.0/t
perl op/cmp.t

With -ffast-math this will fail:
not ok 7 (s <=> NaN) gives: '-1'
not ok 21 (N/A <=> NaN) gives: '-1'
not ok 33 (a <=> NaN) gives: '-1'
not ok 43 (NaN <=> NaN) gives: '-1'
not ok 45 (NaN <=> -1) gives: '-1'
not ok 47 (NaN <=> ) gives: '-1'
not ok 49 (NaN <=> 0) gives: '-1'
not ok 51 (NaN <=> 1) gives: '-1'

Regards,
Rob

--
---------------------"Happiness is understanding."----------------------
Robert Hardy                                          C.E.O. Webcon Inc.
[EMAIL PROTECTED]      PGP Key available by finger        (613) 276-6206


Reply via email to