a.c: struct f { int i; } __attribute__((__packed__));
const char *foo(struct f *); b.c: struct f; const char *foo(struct f *); c.c (identical to a.c): struct f { int i; } __attribute__((__packed__)); const char *foo(struct f *); gcc -fsyntax-only -combine -ffreestanding a.c b.c c.c c.c:3: error: conflicting types for 'foo' b.c:3: error: previous declaration of 'foo' was here There is no difference even if b.c includes attribute((__packed__)). Changing the order such that b.c is either first or last suppresses the error. -- Summary: combine and __attributes__((__packed__)) conflict. Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: pending AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: matt at 3am-software dot com GCC build triplet: x86_64--netbsd GCC host triplet: x86_64--netbsd GCC target triplet: x86_64--netbsd http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31709