https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78666
Bug ID: 78666 Summary: conflicting attribute alloc_size accepted Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- When attribute alloc_size is specified on two declarations of the same function each time with a different argument number GCC doesn't issue any diagnostic but instead disregards the second and subsequent attrribute specifications. The following test case show the problem. GCC should instead issue a warning pointing out each occurrence of the conflicting attribute and letting the user know with declaration it conflicts. $ cat a.c && gcc -O2 -S -Wall -Wextra -Wpedantic a.c void* f (int, int) __attribute__ ((alloc_size (1))); void* f (int, int) __attribute__ ((alloc_size (2))); int g (void) { void *p = f (12, 34); return __builtin_object_size (p, 0); }