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.

Reply via email to