The patch for sub-word atomics support added an include of stdint.h for the
definition of uintptr_h, but this can result in GCC compilation failing if the
stdint.h header has not been installed (from newlib in the case of AMD GCN).
I have fixed this by removing the stdint.h include and replacing uintptr_t with
__UINTPTR_TYPE__, which is a predefined macro in the C preprocessor.
Okay for trunk?
Kwok
2020-01-10 Kwok Cheung Yeung <k...@codesourcery.com>
libgcc/
* config/gcn/atomic.c: Remove include of stdint.h.
(__sync_val_compare_and_swap_##SIZE): Replace uintptr_t with
__UINTPTR_TYPE__.
---
libgcc/config/gcn/atomic.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/libgcc/config/gcn/atomic.c b/libgcc/config/gcn/atomic.c
index 214c9a5..adceb02 100644
--- a/libgcc/config/gcn/atomic.c
+++ b/libgcc/config/gcn/atomic.c
@@ -22,15 +22,14 @@
<http://www.gnu.org/licenses/>. */
#include <stdbool.h>
-#include <stdint.h>
#define __SYNC_SUBWORD_COMPARE_AND_SWAP(TYPE, SIZE) \
\
TYPE \
__sync_val_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \
{ \
- unsigned int *wordptr = (unsigned int *)((uintptr_t) ptr & ~3UL);
\
- int shift = ((uintptr_t) ptr & 3UL) * 8; \
+ unsigned int *wordptr = (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; \
--
2.8.1