http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36041

--- Comment #23 from Marc Glisse <glisse at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #18)
> I think it is a bad idea to introduce the IFUNC into libgcc_s, because then
> while you speed up the few users of this builtin, you slow down all users of
> libgcc_s (pretty much all C++ programs and lots of C programs), because they
> will need to resolve the ifunc.

Do you have a pointer to some text that explains this cost? I tried to read a
bit, but it seems to me that unless you use LD_BIND_NOW, the ifunc won't be
resolved if it isn't called. And if it is called, the main cost compared to a
normal relocation should be the feature test, which is indeed a bit long but
not that bad, especially since calling popcount once increases a lot the
probability that it will be called again.

Not that it matters that much, interested distributions could always ship an
sse4 libgcc_s where they replace the implementation of popcount, and best
performance requires changing things before there is even a call to libgcc, but
I'd like to understand when ifunc should be used or avoided (quite a few glibc
functions seem to use ifunc, though they are much more used than popcount and
most have a non-constant complexity).

Reply via email to