Sunday 20 April 2014

Re: Changing default CFLAGS on i386

>>>>> "AC" == Adam Conrad <adconrad@ubuntu.com> writes:

AC> On Thu, Mar 06, 2014 at 08:52:38PM -0500, Ryan Lortie wrote:
>>
>> fwiw, gnu99 doesn't stop the bug. You have to pick -std=c99
>> specifically.

AC> Curious. You'd have to ask someone who works more with GCC upstream
AC> to be sure, but I'd consider that I bug. I've always assumed and
AC> treated gnuXX as a superset of cXX.

It is intentional.

Using -std=c99 on ia32 requires storing every float and double to ram
and then reloading it to the registers in order to round it to 32 or 64
bits. For every calculation. Every function, every add/sub/mul/div,
everything.

That is SLOW.

When the change first was made, there was enough heated complaing that
gcc compromized by limiting it to just c99, and letting gnu99 continue
to provide normal ia32 floating point.

Just because someone may want some of the improvements in C99 doesn't
imply that they want eliminate performance, too.

When they do, they have -std=c99.

And performance was /eliminated/. On the hardware I had at the time,
a significant number of packages became unusably slow until the change
was reverted for gnu99. Heterogeneous reproducability has value for
some use cases, but the tiny differences in question are irrelevant
to most floating point consumers.

-JimC
--
James Cloos <cloos@jhcloos.com> OpenPGP: 1024D/ED7DAEA6

--
ubuntu-devel mailing list
ubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel