[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU Guile 2.1.6 released (beta)

From: Matt Wette
Subject: Re: GNU Guile 2.1.6 released (beta)
Date: Thu, 9 Mar 2017 18:01:25 -0800

On Mar 9, 2017, at 1:33 PM, Andy Wingo <address@hidden> wrote:
On Wed 25 Jan 2017 04:35, Matt Wette <address@hidden> writes:
So I am trying to compile using clang. This has detected issues with atomics-internal.h. I can fix most issues with casts:
static inline uint32_t
scm_atomic_subtract_uint32 (uint32_t *loc, uint32_t arg)
- return atomic_fetch_sub (loc, arg);
+ return atomic_fetch_sub ((_Atomic uint32_t *)loc, arg);

But problems remain with scm_atomic_set_pointer and scm_atomic_ref_pointer which use void** and is apparently not defined for use with atomics.

Apparently gcc does not have a problem with this use but I’m guessing the C11 standard may have an issue with it.

WDYT about this?


Have not tried to chase this down but ...

In file included from async.c:27:
../libguile/atomics-internal.h:75:20: error: address argument to atomic operation must be a pointer to _Atomic type ('SCM *' (aka 'struct scm_unused_struct **') invalid)
  return SCM_PACK (atomic_exchange (loc, val));
                   ^                ~~~
/opt/local/libexec/llvm-3.9/bin/../lib/clang/3.9.1/include/stdatomic.h:137:42: note: expanded from macro 'atomic_exchange'
#define atomic_exchange(object, desired) __c11_atomic_exchange(object, desired, __ATOMIC_SEQ_CST)
                                         ^                     ~~~~~~
../libguile/tags.h:105:32: note: expanded from macro 'SCM_PACK'
#   define SCM_PACK(x) ((SCM) (x))
1 error generated.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]