[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