http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59220
Bug ID: 59220
Summary: bogus warning: packed attribute is unnecessary on an
overaligned char
Product: gcc
Version: 4.8.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gmail dot com
GCC 4.8.2 and prior incorrectly issue a warning for one-byte struct members
declared with the packed attribute when the member is of an over-aligned type.
The program below shows that the attribute is not unnecessary (it changes the
alignment of the struct member and the whole struct).
$ cat v.c && gcc -Wpacked v.c && ./a.out
extern int printf (const char*, ...);
typedef char C __attribute__ ((aligned (4)));
struct S {
C c __attribute__ ((packed));
};
int main (void) {
struct S s;
printf ("%zu %zu %zu\n",
__alignof__ (s), __alignof__ (s.c), __alignof__ (C));
return 0;
}
v.c:6:6: warning: packed attribute is unnecessary for ācā [-Wattributes]
C c __attribute__ ((packed));
^
1 1 4