https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89798
Bug ID: 89798 Summary: excessive vector_size silently accepted and truncated Product: gcc Version: 9.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: --- In the following test case the declaration of v0 is accepted and its size matches the size specified by the vector_size attribute. The declaration of v1 is also accepted but its size does not match that specified by the same attribute. See also pr89797 for a similar test case that triggers an ICE. GCC should validate the attribute argument against its internal maximum and reject excessive arguments with a descriptive error. $ cat z.c && gcc -S -Wall -Wextra z.c #define N0 (1LU << 30) __attribute__ ((vector_size (N0))) char v0; _Static_assert (N0 == sizeof v0); // passes #define N1 (1LU << 34) __attribute__ ((vector_size (N1))) char v1; _Static_assert (N1 == sizeof v1); // fails z.c:10:1: error: static assertion failed 10 | _Static_assert (N1 == sizeof v1); // fails | ^~~~~~~~~~~~~~