Skip site navigation (1)Skip section navigation (2)
Date:      Sat,  4 Mar 2006 15:42:59 +0000 (GMT)
From:      jkoshy@FreeBSD.ORG (Joseph Koshy)
To:        Maxime Henrion <mux@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/sys queue.h 
Message-ID:  <20060304154259.8A7BE16A422@hub.freebsd.org>
In-Reply-To: Message from Maxime Henrion <mux@FreeBSD.org> of "Fri, 03 Mar 2006 18:54:33 GMT." <200603031854.k23IsXeJ062568@repoman.freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help

> mux         2006-03-03 18:54:33 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     sys/sys              queue.h 
>   Log:
>   Cast the pointer to void * before casting it back to struct type * in
>   STAILQ_LAST.  This quiets a warning from GCC about increased required
>   alignment for the cast.
>   
>   Idea from:      cognet

Doesn't this trade a compile time warning for a runtime fault on those
architectures where alignment matters?

Which code triggers this warning? 

 274 #define STAILQ_LAST(head, type, field)                                 \
 275         (STAILQ_EMPTY((head)) ?                                        \
 276                 NULL :                                                 \
 277                 ((struct type *)                                       \
 278                 ((char *)((head)->stqh_last) - __offsetof(struct type, field))))

I can't see how this code would trigger a warning in normal usage.

Regards,
Koshy
<jkoshy@freebsd.org>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060304154259.8A7BE16A422>