Compile this: extern void f(void); extern void g(void) __attribute__ ((hot)) __attribute__((cold)); extern void f(void) __attribute__ ((hot)); extern void f(void) __attribute__ ((cold));
I see a warning for the conflicting attributes on 'g', but not for 'f'. The problem here is that the attribute handler is not called for the smashed decl, only for the one currently being constructed. -- Summary: no warning for conflicting attributes on separate decls Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tromey at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32960