On Mon, May 2, 2022 at 8:34 AM Richard Biener
<richard.guent...@gmail.com> wrote:
>
> On Sun, May 1, 2022 at 2:15 PM Aldy Hernandez via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
> >
> > We are ICEing in set_range_info_raw because value_range_kind cannot be
> > VR_VARYING, since SSA_NAME_RANGE_TYPE can only hold VR_RANGE /
> > VR_ANTI_RANGE.  Most of the time setting a VR_VARYING as a global
> > range makes no sense.  However, we can have a range spanning the
> > entire domain (VR_RANGE of [MIN,MAX] which is essentially a
> > VR_VARYING), if the nonzero bits are set.
> >
> > This was working before because set_range_info_raw allows setting
> > VR_RANGE of [MIN, MAX].  However, when going through an irange, we
> > normalize this to a VR_VARYING, thus causing the ICE.  It's
> > interesting that other calls to set_range_info with an irange haven't
> > triggered this.
> >
> > One solution would be to just ignore VR_VARYING and bail, since
> > set_range_info* is really an update of the current range semantic
> > wise.  After all, we keep the nonzero bits which provide additional
> > info.  But this would be a change in behavior, so not suitable until
> > after GCC 12 is released.  So in order to keep with current behavior
> > we can just denormalize the varying to VR_RANGE.
>
> But there's no point in storing such info - shouldn't the function simply
> clear the range and return? Or at least avoid allocating a new range
> -info and just return if none is associated with the SSA name at the moment?

Yup.  That's what the code block immediately following will do: clear
the range (and free the storage), but only if the nonzero bits are
also clear.

This duality of ranges with nonzero bits and ranges is a bit annoying.
I have code overhauling this for when we provide a way to store global
(multi) ranges later this cycle.  Nonzero bits will live in the range
itself, and updating the global range / nonzero bits will have one
entry point that takes a range.  Also, nonzero bits and ranges will be
kept up to date wrt each other automatically.

Aldy

Reply via email to