https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91351
--- Comment #10 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Martin Liška from comment #9) > So the integer_type of the enumeral_type hash precision:5 and: > min <integer_cst 0x7ffff7806378 0> > > and > > max <integer_cst 0x7ffff7806390 31> > > which is what one would expect from -fstrict-enums. But the enum type itself has precision:32 min <integer_cst 0x7ffff76bf0d8 0> max <integer_cst 0x7ffff76bf090 4294967295> I am not surprised the compiler gets confused sometimes... Anyway, - if (ANY_INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type) == unsignedp) + if (TREE_CODE (type) == INTEGER_TYPE && TYPE_UNSIGNED (type) == unsignedp) (a partial revert of just this line) or the slightly more advanced version I gave above seems to be the obvious fix for this regression, we can always think of additional issues later.