/usr/src/gcc-4.4/debian/patches/linux-atomic-builtin-expect.diff is in gcc-4.4-source 4.4.7-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # DP: [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport)
2010-09-01 Marcus Shawcroft <marcus.shawcroft@arm.com>
* config/arm/linux-atomic.c (__sync_val_compare_and_swap_4): Insert __builtin_expect().
(SUBWORD_VAL_CAS): Likewise.
--- a/src/gcc/config/arm/linux-atomic.c
+++ b/src/gcc/config/arm/linux-atomic.c
@@ -155,12 +155,12 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
{
actual_oldval = *ptr;
- if (oldval != actual_oldval)
+ if (__builtin_expect (oldval != actual_oldval, 0))
return actual_oldval;
fail = __kernel_cmpxchg (actual_oldval, newval, ptr);
- if (!fail)
+ if (__builtin_expect (!fail, 1))
return oldval;
}
}
@@ -180,7 +180,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
{ \
actual_oldval = *wordptr; \
\
- if (((actual_oldval & mask) >> shift) != (unsigned int) oldval) \
+ if (__builtin_expect (((actual_oldval & mask) >> shift) != \
+ (unsigned int) oldval, 0)) \
return (actual_oldval & mask) >> shift; \
\
actual_newval = (actual_oldval & ~mask) \
@@ -189,7 +190,7 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
fail = __kernel_cmpxchg (actual_oldval, actual_newval, \
wordptr); \
\
- if (!fail) \
+ if (__builtin_expect (!fail, 1)) \
return oldval; \
} \
}
|