tech-userlevel archive

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

Re: in which we present an ugly hack to make sys/queue.h CIRCLEQ work



>On Wed, Nov 20, 2013 at 07:01:15PM -0500, Ken Hornstein wrote:
> > #define TAILQ_PREV(elm, headname, field)                                \
> >         (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
>
>There's another wrinkle, however, which is that this code (TAILQ_PREV)
>also violates the strict-aliasing rules. I don't think anyone has
>found a clear case of gcc (4.8 or otherwise) tripping on it yet, but
>it too really ought to be fixed before it bites someone.

I'll be the first one to admit that the strict-aliasing rules are just
at the limit of my understanding ... but doesn't that depend on how
you use it?  You'd have to be using it in a case where it mattered if
it could be the same as another pointer.  Okay, I can imagine that
wouldn't be too hard to get into that situation, but it's not in the
same class as the CIRCLEQ macros where the violation of strict-aliasing
rules is directly in the macros themselves.

--Ken


Home | Main Index | Thread Index | Old Index