On 10/01/2020 14:21, Kwok Cheung Yeung wrote:
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;                         \

OK, thanks.

Andrew

Reply via email to