mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 17:53:37 +08:00
Wrap __builtin_expect in pthread.h
[BZ #14188] This fixes compilation of programs using pthread_cleanup_push built with non-gcc compilers and older gcc compilers.
This commit is contained in:
parent
2fd6ff133b
commit
4af3879c26
@ -1,3 +1,10 @@
|
||||
2012-06-04 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
[BZ #14188]
|
||||
* misc/sys/cdefs.h (__glibc_unlikely): New macro to wrap cases
|
||||
where __builtin_expect is unavailable.
|
||||
|
||||
2012-06-03 David S. Miller <davem@davemloft.net>
|
||||
|
||||
* stdlib/longlong.h: Updated from GCC.
|
||||
|
@ -369,6 +369,12 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if __GNUC__ >= 3
|
||||
# define __glibc_unlikely(cond) __builtin_expect((cond), 0)
|
||||
#else
|
||||
# define __glibc_unlikely(cond) (cond)
|
||||
#endif
|
||||
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
|
||||
|
@ -1,3 +1,12 @@
|
||||
2012-06-04 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
[BZ #14188]
|
||||
* sysdeps/pthread/pthread.h
|
||||
[!(defined __GNUC__ && defined __EXCEPTIONS)]
|
||||
(pthread_cleanup_push, pthread_cleanup_push_defer_np): Use
|
||||
__libc_unlikely instead of __builtin_expect.
|
||||
|
||||
2012-05-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
[BZ #14117]
|
||||
|
@ -659,7 +659,7 @@ __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
|
||||
void *__cancel_arg = (arg); \
|
||||
int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
|
||||
__cancel_buf.__cancel_jmp_buf, 0); \
|
||||
if (__builtin_expect (__not_first_call, 0)) \
|
||||
if (__glibc_unlikely (__not_first_call)) \
|
||||
{ \
|
||||
__cancel_routine (__cancel_arg); \
|
||||
__pthread_unwind_next (&__cancel_buf); \
|
||||
@ -694,7 +694,7 @@ extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
|
||||
void *__cancel_arg = (arg); \
|
||||
int __not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) (void *) \
|
||||
__cancel_buf.__cancel_jmp_buf, 0); \
|
||||
if (__builtin_expect (__not_first_call, 0)) \
|
||||
if (__glibc_unlikely (__not_first_call)) \
|
||||
{ \
|
||||
__cancel_routine (__cancel_arg); \
|
||||
__pthread_unwind_next (&__cancel_buf); \
|
||||
|
Loading…
Reference in New Issue
Block a user