> On Mar 9, 2017, at 1:33 PM, Andy Wingo <[email protected]> wrote:
> On Wed 25 Jan 2017 04:35, Matt Wette <[email protected] 
> <mailto:[email protected]>> 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?
> 
> Andy

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