summaryrefslogtreecommitdiff
path: root/gcc/config/arm
diff options
context:
space:
mode:
authormshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-03 10:01:44 +0000
committermshawcroft <mshawcroft@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-03 10:01:44 +0000
commit5577120dcad7a0f98406e307c335db495f217f30 (patch)
tree562ff1a411eb52c7d85adff3dd407e05e3bf5b02 /gcc/config/arm
parent79ee0029f41dabc810aabd2a600f8e8b32568ecb (diff)
downloadgcc-5577120dcad7a0f98406e307c335db495f217f30.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163805 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r--gcc/config/arm/linux-atomic.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/arm/linux-atomic.c b/gcc/config/arm/linux-atomic.c
index 685f16b80e9..ddedeb52985 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; \
} \
}