[Bug c/84108] [8 Regression] incorrect -Wattributes warning for packed/aligned conflict on struct members
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 8 17:09:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84108
--- Comment #5 from Martin Sebor <msebor at gcc dot gnu.org> ---
(In reply to Arnd Bergmann from comment #3)
> Two other variations of this warning that I ran into are slightly different:
> fs/ubifs/ubifs-media.h and include/scsi/libsas.h define a structure with
> __attribute__((packed)) and use that structure as a member in another
> structure, with that member being marked __attribute__((aligned)). I would
> hope that this behavior has never changed.
I don't see these in my build. Are they variants of -Wattributes or is it
actually -Wpacked-not-aligned?
Here's a test case based my understanding of your description. The warning is
new in GCC 8 but there is no change in alignment as a result. If I
misunderstood or if you see something different, can you please reduce it or
attach the translation unit?
$ cat a.c && gcc -S -Wall a.c
struct __attribute__ ((aligned (32))) A { char a[32]; };
struct __attribute__ ((packed)) B
{
struct A a; // -Wpacked-not-aligned: alignment 1 of ‘struct B’ is less than
32
} b;
_Static_assert (_Alignof (b.a) == 1, "assert b.a is packed");
a.c:6:1: warning: alignment 1 of ‘struct B’ is less than 32
[-Wpacked-not-aligned]
} b;
^
More information about the Gcc-bugs
mailing list