> I think you want to use wide-ints here and > > wide_int idx = wi::from (minidx, TYPE_PRECISION (TYPE_DOMAIN > (...)), TYPE_SIGN (TYPE_DOMAIN (..))); > wide_int maxidx = ... > > you can then simply iterate minidx with ++ and do the final compare > against maxidx > with while (++idx <= maxidx). For the array ref index we want to use > TYPE_DOMAIN > as type as well, not size_int. Thus wide_int_to_tree (TYPE_DOMAIN > (...)..idx).
Yes, you generally cannot use HOST_WIDE_INT to avoid overflow because this will break for 64-bit HOST_WIDE_INT and 32-bit sizetype in corner cases. But using offset_int should be OK, see for example get_ref_base_and_extent. -- Eric Botcazou