https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115729
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jsm28 at gcc dot gnu.org Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED Keywords| |rejects-valid --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- static const uint64_t MS_D = ((1 << IO_IDX) | (1 << MSD_IDX)); is not a C constant expression (compilers are allowed to accept more, no diagnostic required). I think with C23 you can use constexpr uint64_t MS_D = ((1 << IO_IDX) | (1 << MSD_IDX)); otherwise use enum or #define.