https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78667

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
In addition to the problem described in comment #0 GCC also accepts (though
with a warning) declarations of attribute alloc_size whose argument is a string
(even though it should be an integer).  GCC should reject such invalid
arguments with an error analogously to other similar attributes such as
aligned.  The following test case shows the difference between handling this
user error with the two attributes.

$ cat a.c && gcc -S -Wall -Wextra a.c
void f (void) __attribute__ ((aligned ("foo")));
void g (void) __attribute__ ((alloc_size ("bar")));

a.c:1:1: error: requested alignment is not an integer constant
 void f (void) __attribute__ ((aligned ("foo")));
 ^~~~
a.c:2:1: warning: alloc_size parameter outside range [-Wattributes]
 void g (void) __attribute__ ((alloc_size ("bar")));
 ^~~~

Reply via email to