https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107314
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- This is a deliberate change: if any enumerators are outside the range of int, then all enumerators now have the enum type, rather than those outside the range of int having the enum type and those inside the range of int having type int. (The logic to determine the integer type with which the enum type is compatible is unchanged. In the case of this testcase, it produces unsigned int.) While, as noted in the commit message, the change could be made conditional on C2x mode if necessary, I'm doubtful if that would actually help grub; presumably they'd rather change things so they work in C2x mode rather than keeping using an older mode after -std=gnu2x is the default, or postponing the fix until then.