aboutsummaryrefslogtreecommitdiff
path: root/elf/dl-init.c
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2018-06-01 12:53:59 -0400
committerZack Weinberg <zackw@panix.com>2018-06-12 10:02:27 -0400
commit2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae (patch)
treefabc08af34d8fbe8227e072ade54be411c6a4123 /elf/dl-init.c
parent329ea513b451ae8322aa7a24ed84da13992af2dd (diff)
downloadglibc-zack/elf-builtin-expect-conversion.zip
glibc-zack/elf-builtin-expect-conversion.tar.gz
glibc-zack/elf-builtin-expect-conversion.tar.bz2
Convert __builtin_expect to __glibc_(un)likely throughout elf/.zack/elf-builtin-expect-conversion
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.
Diffstat (limited to 'elf/dl-init.c')
-rw-r--r--elf/dl-init.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/elf/dl-init.c b/elf/dl-init.c
index 3e72fa3..50c5b57 100644
--- a/elf/dl-init.c
+++ b/elf/dl-init.c
@@ -36,13 +36,13 @@ call_init (struct link_map *l, int argc, char **argv, char **env)
l->l_init_called = 1;
/* Check for object which constructors we do not run here. */
- if (__builtin_expect (l->l_name[0], 'a') == '\0'
+ if (__glibc_unlikely (l->l_name[0] == '\0')
&& l->l_type == lt_executable)
return;
/* Are there any constructors? */
if (l->l_info[DT_INIT] == NULL
- && __builtin_expect (l->l_info[DT_INIT_ARRAY] == NULL, 1))
+ && __glibc_likely (l->l_info[DT_INIT_ARRAY] == NULL))
return;
/* Print a debug message if wanted. */
@@ -88,7 +88,7 @@ _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
}
/* Don't do anything if there is no preinit array. */
- if (__builtin_expect (preinit_array != NULL, 0)
+ if (__glibc_unlikely (preinit_array != NULL)
&& preinit_array_size != NULL
&& (i = preinit_array_size->d_un.d_val / sizeof (ElfW(Addr))) > 0)
{