summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2022-06-24 13:19:46 +0000
committerylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2022-06-24 13:19:46 +0000
commit2b3f411c8e80d33ee2f4cf1f6c930bb5f1f7d43b (patch)
tree07b48037e077d22c19c0aa0a055c20f984662b15
parent2b0db015c28f37494877d6d5a585342c511393fd (diff)
downloadlibapr-2b3f411c8e80d33ee2f4cf1f6c930bb5f1f7d43b.tar.gz
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
-rw-r--r--atomic/unix/builtins.c2
1 files changed, 1 insertions, 1 deletions
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);