This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Do not provide inlines for GCC build-in functions


On 05/17/2012 06:12 AM, Carlos O'Donell wrote:
On Tue, May 15, 2012 at 3:36 PM, Andreas Jaeger<aj@suse.de> wrote:

As mentioned previously (http://sourceware.org/ml/libc-alpha/2012-05/msg00106.html), GCC 3.4 introduced builtin functions and thus the inlines are not needed at all.

Patch was tested on Linux/x86-64 and I compared libc.so and libm.so and
found no difference in the assembly.

Looking at math/test-idouble I found a couple of places where GCC used
now the builtins - instead of a function call like previously. So, GCC
does a better job than the inlines.

Ok to commit?

Andreas

2012-05-15 Andreas Jaeger<aj@suse.de>

        * sysdeps/x86_64/fpu/bits/mathinline.h (lrintf): Make inline
        function only available for GCCs before 3.4 since GCC 3.4
        introduced a builtin.
        (lrint): Likewise.
        (llrintf): Likewise.
        (llrint): Likewise.
        (fmaxf): Likewise.
        (fmax): Likewise.
        (fminf): Likewise.
        (fmin): Likewise.
        (rint): Likewise.
        (rintf): Likewise.
        (nearbyint): Likewise.
        (nearbyintf): Likewise.
        (ceil): Likewise.
        (ceilf): Likewise.
        (floor): Likewise.
        (floorf): Likewise.

So what happens if I call lrint but compile with -fno-builtins?


After the change:
The same as if you compile with -D__NO_MATH_INLINES: no inlining occurs.

But this is fine, the functions are optimizations that were added when gcc was not able to do them. The change for x86-64 reflects changes done for the i386 code in sysdeps/i386/fpu/bits/mathinline.h already.

Still the i386 code could use more of the gcc builtins, there's further cleanup needed...

Andreas
--
 Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
  SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
   GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]