From 2b3f411c8e80d33ee2f4cf1f6c930bb5f1f7d43b Mon Sep 17 00:00:00 2001 From: ylavic Date: Fri, 24 Jun 2022 13:19:46 +0000 Subject: atomic: Fix -Wincompatible-pointer-types-discards-qualifiers atomic/unix/builtins.c:117:38: warning: passing 'void **' to parameter of type 'volatile void **' discards qualifiers in nested pointer types [-Wincompatible-pointer-types-discards-qualifiers] __atomic_compare_exchange_n(mem, (void **)&cmp, ptr, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); ^~~~~~~~~~~~~ This warning is weird, because 'volatile void **' is not a thing usually, it happens on macos in apr-1.x, where apr_atomic_casptr() is (ill-)defined as: APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *ptr, const void *cmp); but not on trunk's: APR_DECLARE(void*) apr_atomic_casptr(void *volatile *mem, void *ptr, const void *cmp); The mark clearly indicates that (void **)&cmp is the culprit though (compiler bug?). Let's see if using the generic (void *) cast helps, the goal of the (void **) cast was to remove constantness only (__atomic_compare_exchange_n will modify the pointer on stack, but not the pointed to value), (void *) will do that too without any volatile qualifier issue possibly. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1902233 13f79535-47bb-0310-9956-ffa450edef68 --- atomic/unix/builtins.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atomic/unix/builtins.c b/atomic/unix/builtins.c index 7aaada2f4..e604a3d26 100644 --- a/atomic/unix/builtins.c +++ b/atomic/unix/builtins.c @@ -114,7 +114,7 @@ APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint APR_DECLARE(void*) apr_atomic_casptr(void *volatile *mem, void *ptr, const void *cmp) { #if HAVE__ATOMIC_BUILTINS - __atomic_compare_exchange_n(mem, (void **)&cmp, ptr, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); + __atomic_compare_exchange_n(mem, (void *)&cmp, ptr, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return (void *)cmp; #else return (void *)__sync_val_compare_and_swap(mem, (void *)cmp, ptr); -- cgit v1.2.1