On 09/13/17 19:06, Joseph Myers wrote:
> What does this warning do in cases where a type has different alignments
> inside and outside structs? I'm thinking of something like
>
> struct s { long long x; } *p;
> /* ... */
> (long long *)p
>
> on 32-bit x86 - where long long's preferred alignment is 8 bytes, but in
> structures it's 4 bytes. (Likewise for double in place of long long.) I
> think a warning for a (long long *)p cast might be surprising in that
> case.
>
Well, yes this does get a warning. But doesn't that cast then violate
the underlying alignment requirement of long long* ?
Of course there is probably a reason why -Wcast-align is not enabled by
default, and likewise this warning emits a fair amount of false
positives, but nevertheless I think it is often worth looking at the
places where this warning flags a possible alignment issue.
However, neither -Wcast-align nor -Wcast-align=strict are enabled unless
explicitly requested.
Bernd.