https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120166
Bug ID: 120166 Summary: [15 Regression] constexpr array with 66 elements yields "integer initializer is not an integer constant expression" Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: hp at gcc dot gnu.org Target Milestone: --- Compiling the following code with plain gcc -c -std=c23 yields: t.c:15:10: error: 'constexpr' integer initializer is not an integer constant expression 15 | 0, 1, 2, 3, 4, 5, 6, 7, Note that the ok_array with one less element yields no error. No error when compiled as C++. Works: r14-10114-g09680e3ee7d7 (native x86_64-linux; N.B.: needs explicit -std=c23) Also works: r16-456-g974b079741f9 (cris-elf) Doesn't: r15-9238-g546f28f83ceba7 (aarch64-elf) Doesn't: r16-48-gd508d24282c6 (aarch64-linux-gnu) Also doesn't, according to my colleague, more importantly, the recent gcc-15 release for aarch64-linux-gnu. So, this may be a case of a commit needing a backport to the gcc-15 branch. constexpr unsigned char ok_array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, }; constexpr unsigned char not_ok_array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, };