diff options
author | Marcus Shawcroft <mshawcroft@gcc.gnu.org> | 2010-09-03 10:01:44 +0000 |
---|---|---|
committer | Marcus Shawcroft <mshawcroft@gcc.gnu.org> | 2010-09-03 10:01:44 +0000 |
commit | f74bd71564c24fffa3902e2a133d2141537a67a3 (patch) | |
tree | 562ff1a411eb52c7d85adff3dd407e05e3bf5b02 | |
parent | a482b1f5f45fbd54fce4098d4e03958d1457a310 (diff) | |
download | gcc-f74bd71564c24fffa3902e2a133d2141537a67a3.zip gcc-f74bd71564c24fffa3902e2a133d2141537a67a3.tar.gz gcc-f74bd71564c24fffa3902e2a133d2141537a67a3.tar.bz2 |
linux-atomic.c (__sync_val_compare_and_swap_4): Insert __builtin_expect().
2010-09-03 Marcus Shawcroft <marcus.shawcroft@arm.com>
* config/arm/linux-atomic.c (__sync_val_compare_and_swap_4): Insert __builtin_expect().
(SUBWORD_VAL_CAS): Likewise.
From-SVN: r163805
-rw-r--r-- | gcc/config/arm/linux-atomic.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/arm/linux-atomic.c b/gcc/config/arm/linux-atomic.c index 685f16b..ddedeb5 100644 --- a/gcc/config/arm/linux-atomic.c +++ b/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; \ } \ } |