diff options
Diffstat (limited to 'libc')
-rw-r--r-- | libc/stdlib/malloc/malloc.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libc/stdlib/malloc/malloc.h b/libc/stdlib/malloc/malloc.h index 4914a9edc..30a28b776 100644 --- a/libc/stdlib/malloc/malloc.h +++ b/libc/stdlib/malloc/malloc.h @@ -110,14 +110,16 @@ extern malloc_mutex_t __malloc_sbrk_lock; #endif /* __UCLIBC_HAS_THREADS__ */ -/* Use branch-prediction macros from libc if defined. */ -#ifdef likely -#define __malloc_likely(c) likely(c) -#define __malloc_unlikely(c) unlikely(c) +/* branch-prediction macros; they may already be defined by libc. */ +#ifndef likely +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +#define likely(cond) __builtin_expect(!!(int)(cond), 1) +#define unlikely(cond) __builtin_expect((int)(cond), 0) #else -#define __malloc_likely(c) (c) -#define __malloc_unlikely(c) (c) +#define likely(cond) (cond) +#define unlikely(cond) (cond) #endif +#endif /* !likely */ /* Define MALLOC_DEBUGGING to cause malloc to emit debugging info to stderr. */ |