On Tue, May 13, 2014 at 12:23:48AM +0200, Samuel Thibault wrote:
> Justus Winter, le Mon 12 May 2014 12:05:41 +0200, a écrit :
> > +  const union _references op = { .refs = { .hard = 1 } };
> > +  refcounts_t r = __atomic_add_fetch (ref, op.rc, __ATOMIC_RELAXED);
> 
> Mmm, I don't think it is allowed by C to write into a field and read
> from another field.  The legacy Hurd code used to tend to do it in some
> places, but it breaks with smart compilers.

It's not defined by C, but all major compilers support it as it's the
cleanest way, if done properly, not to violate strict aliasing currently.

-- 
Richard Braun

Reply via email to