+2010-03-26 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/alpha/bits/atomic.h (__arch_exchange_8_int,
+ __arch_exchange_16_int, __arch_exchange_32_int,
+ __arch_exchange_64_int, __arch_exchange_and_add_32_int,
+ __arch_exchange_and_add_64_int): Use __typeof to get the
+ return type correct without warning.
+
2010-03-23 Matt Turner <mattst88@gmail.com>
Aurelien Jarno <aurelien@aurel32.net>
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#define __arch_exchange_8_int(mem, value, mb1, mb2) \
({ \
- unsigned long __ret, __tmp, __addr64, __sval; \
+ unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
" andnot %[__addr8],7,%[__addr64]\n" \
#define __arch_exchange_16_int(mem, value, mb1, mb2) \
({ \
- unsigned long __ret, __tmp, __addr64, __sval; \
+ unsigned long __tmp, __addr64, __sval; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
" andnot %[__addr16],7,%[__addr64]\n" \
#define __arch_exchange_32_int(mem, value, mb1, mb2) \
({ \
- signed int __ret, __tmp; \
+ signed int __tmp; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
"1: ldl_l %[__ret],%[__mem]\n" \
#define __arch_exchange_64_int(mem, value, mb1, mb2) \
({ \
- unsigned long __ret, __tmp; \
+ unsigned long __tmp; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
"1: ldq_l %[__ret],%[__mem]\n" \
#define __arch_exchange_and_add_32_int(mem, value, mb1, mb2) \
({ \
- signed int __ret, __tmp; \
+ signed int __tmp; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
"1: ldl_l %[__ret],%[__mem]\n" \
#define __arch_exchange_and_add_64_int(mem, value, mb1, mb2) \
({ \
- unsigned long __ret, __tmp; \
+ unsigned long __tmp; __typeof(*mem) __ret; \
__asm__ __volatile__ ( \
mb1 \
"1: ldq_l %[__ret],%[__mem]\n" \