diff mbox series

[uclibc-ng-devel,v3] Cast to proper types inside atomic macroses.

Message ID 20240520080436.195151-1-dm.chestnykh@gmail.com
State Accepted
Headers show
Series [uclibc-ng-devel,v3] Cast to proper types inside atomic macroses. | expand

Commit Message

Dmitry Chestnykh May 20, 2024, 8:04 a.m. UTC
GCC-14 raises `-Wint-conversion` error
if lvalues are of pointer types and rvalues
are of integer types.

Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
---
 include/atomic.h | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

Comments

Waldemar Brodkorb May 21, 2024, 4:01 a.m. UTC | #1
Hi Dmitry,
Dmitry Chestnykh wrote,

> GCC-14 raises `-Wint-conversion` error
> if lvalues are of pointer types and rvalues
> are of integer types.
> 
> Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>

Committed and pushed,
All targets now compiling with gcc 14.1.0.
 Thanks
  Waldemar
diff mbox series

Patch

diff --git a/include/atomic.h b/include/atomic.h
index 267aff5d5..3adcfbc5f 100644
--- a/include/atomic.h
+++ b/include/atomic.h
@@ -54,15 +54,15 @@ 
    and following args.  */
 #define __atomic_val_bysize(pre, post, mem, ...)			      \
   ({									      \
-    __typeof (*mem) __atg1_result;					      \
+    __typeof ((__typeof (*(mem))) *(mem)) __atg1_result;					                                        \
     if (sizeof (*mem) == 1)						      \
-      __atg1_result = pre##_8_##post (mem, __VA_ARGS__);		      \
+      __atg1_result = (__typeof ((__typeof (*(mem))) *(mem))) pre##_8_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 2)					      \
-      __atg1_result = pre##_16_##post (mem, __VA_ARGS__);		      \
+      __atg1_result = (__typeof ((__typeof (*(mem))) *(mem))) pre##_16_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 4)					      \
-      __atg1_result = pre##_32_##post (mem, __VA_ARGS__);		      \
+      __atg1_result = (__typeof ((__typeof (*(mem))) *(mem))) pre##_32_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 8)					      \
-      __atg1_result = pre##_64_##post (mem, __VA_ARGS__);		      \
+      __atg1_result = (__typeof ((__typeof (*(mem))) *(mem))) pre##_64_##post (mem, __VA_ARGS__);		      \
     else								      \
       abort ();								      \
     __atg1_result;							      \
@@ -71,13 +71,13 @@ 
   ({									      \
     int __atg2_result;							      \
     if (sizeof (*mem) == 1)						      \
-      __atg2_result = pre##_8_##post (mem, __VA_ARGS__);		      \
+      __atg2_result = (int) pre##_8_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 2)					      \
-      __atg2_result = pre##_16_##post (mem, __VA_ARGS__);		      \
+      __atg2_result = (int) pre##_16_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 4)					      \
-      __atg2_result = pre##_32_##post (mem, __VA_ARGS__);		      \
+      __atg2_result = (int) pre##_32_##post (mem, __VA_ARGS__);		      \
     else if (sizeof (*mem) == 8)					      \
-      __atg2_result = pre##_64_##post (mem, __VA_ARGS__);		      \
+      __atg2_result = (int) pre##_64_##post (mem, __VA_ARGS__);		      \
     else								      \
       abort ();								      \
     __atg2_result;							      \