https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93674
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Basically, I think ivopts should try to avoid using types which have lower TYPE_PRECISION or TYPE_MIN_VALUE/TYPE_MAX_VALUE that is not the minimum or maximum value of the corresponding precision, unless all operations it is replacing are already performed in that type. Otherwise it should use build_nonstandard_integer_type or something similar to get a type that covers everything that is needed.