[nvptx, libgcc] Fix Wbuiltin-declaration-mismatch in atomic.c
When building for target nvptx, we get this and similar warnings for libgcc: ... src/libgcc/config/nvptx/atomic.c:39:1: warning: conflicting types for \ built-in function ‘__sync_val_compare_and_swap_1’; expected \ ‘unsigned char(volatile void *, unsigned char, unsigned char)’ \ [-Wbuiltin-declaration-mismatch] ... Fix this by making sure in atomic.c that the pointers used are of type 'volatile void *'. Tested by rebuilding atomic.c. libgcc/ChangeLog: * config/nvptx/atomic.c (__SYNC_SUBWORD_COMPARE_AND_SWAP): Fix Wbuiltin-declaration-mismatch.
This commit is contained in:
parent
69ca5f3a98
commit
7b9c26519e
1 changed files with 8 additions and 4 deletions
|
@ -36,10 +36,13 @@
|
|||
#define __SYNC_SUBWORD_COMPARE_AND_SWAP(TYPE, SIZE) \
|
||||
\
|
||||
TYPE \
|
||||
__sync_val_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \
|
||||
__sync_val_compare_and_swap_##SIZE (volatile void *vptr, TYPE oldval, \
|
||||
TYPE newval) \
|
||||
{ \
|
||||
unsigned int *wordptr = (unsigned int *)((__UINTPTR_TYPE__ ) ptr & ~3UL); \
|
||||
int shift = ((__UINTPTR_TYPE__ ) ptr & 3UL) * 8; \
|
||||
volatile TYPE *ptr = vptr; \
|
||||
volatile unsigned int *wordptr \
|
||||
= (volatile unsigned int *)((__UINTPTR_TYPE__) ptr & ~3UL); \
|
||||
int shift = ((__UINTPTR_TYPE__) ptr & 3UL) * 8; \
|
||||
unsigned int valmask = (1 << (SIZE * 8)) - 1; \
|
||||
unsigned int wordmask = ~(valmask << shift); \
|
||||
unsigned int oldword = *wordptr; \
|
||||
|
@ -64,7 +67,8 @@ __sync_val_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \
|
|||
} \
|
||||
\
|
||||
bool \
|
||||
__sync_bool_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \
|
||||
__sync_bool_compare_and_swap_##SIZE (volatile void *ptr, TYPE oldval, \
|
||||
TYPE newval) \
|
||||
{ \
|
||||
return __sync_val_compare_and_swap_##SIZE (ptr, oldval, newval) == oldval; \
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue