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

Andreas Jaeger aj@suse.de
Thu May 17 09:27:00 GMT 2012


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



More information about the Libc-alpha mailing list