https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81871
--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Clang prints:
a.c:1:22: warning: 'alloc_align' attribute only applies to return values that
are pointers or references [-Wignored-attributes]
After changing the return type to void*, Clang then prints:
a.c:1:30: error: 'alloc_align' attribute argument may only refer to a
function parameter of integer type
GCC accepts both without a warning. In fact, GCC accepts alloc_align even on
function declarations where the argument is not an integer, such as in:
struct S { };
__attribute__ ((alloc_align (1))) void* f (struct S);
Clang detects this as well:
a.c:2:30: error: 'alloc_align' attribute argument may only refer to a
function parameter of integer type