]> git.ipfire.org Git - thirdparty/glibc.git/commit
Convert __builtin_expect to __glibc_(un)likely throughout elf/. zack/elf-builtin-expect-conversion
authorZack Weinberg <zackw@panix.com>
Fri, 1 Jun 2018 16:53:59 +0000 (12:53 -0400)
committerZack Weinberg <zackw@panix.com>
Tue, 12 Jun 2018 14:02:27 +0000 (10:02 -0400)
commit2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae
treefabc08af34d8fbe8227e072ade54be411c6a4123
parent329ea513b451ae8322aa7a24ed84da13992af2dd
Convert __builtin_expect to __glibc_(un)likely throughout elf/.

In the previous patch I didn't change a use of __builtin_expect to
__glibc_(un)likely that happened to be right next to the code I was
actually working on; Andreas asked why not, and I said that there were
a bunch more uses of __builtin_expect in that file and I would convert
them all in a separate patch.  This is that patch, converting all of
elf/.

I would appreciate someone checking over this patch very carefully
indeed.  In a whole bunch of places, __builtin_expect was used in a
way that did not map mechanically to the newer convention.  The test
suite caught one mistake; I'm not confident I didn't make any more.

Writing this patch gave me a deeper appreciation for why we _want_ to
switch to __glibc_(un)likely, but also for how difficult it can be.  I
now think that people should _not_ be asked to change existing uses of
__builtin_expect in a patch whose purpose is something else.

* elf/dl-addr.c, elf/dl-cache.c, elf/dl-close.c, elf/dl-deps.c
* elf/dl-environ.c, elf/dl-error-skeleton.c, elf/dl-fini.c
* elf/dl-fptr.c, elf/dl-init.c, elf/dl-libc.c, elf/dl-minimal.c
* elf/dl-open.c, elf/dl-reloc.c, elf/dl-runtime.c
* elf/dl-sysdep.c, elf/dl-tls.c, elf/dl-version.c, elf/ldconfig.c
* elf/rtld.c: Replace __builtin_expect with __glibc_likely or
__glibc_unlikely, as appropriate, throughout.
19 files changed:
elf/dl-addr.c
elf/dl-cache.c
elf/dl-close.c
elf/dl-deps.c
elf/dl-environ.c
elf/dl-error-skeleton.c
elf/dl-fini.c
elf/dl-fptr.c
elf/dl-init.c
elf/dl-libc.c
elf/dl-minimal.c
elf/dl-open.c
elf/dl-reloc.c
elf/dl-runtime.c
elf/dl-sysdep.c
elf/dl-tls.c
elf/dl-version.c
elf/ldconfig.c
elf/rtld.c