On Sun, Apr 28, 2024 at 9:07 PM Aldy Hernandez <al...@redhat.com> wrote: > > Fix some Value_Range's that we know ahead of time will be only > integers. This avoids using the polymorphic Value_Range unnecessarily
But isn't Value_Range a variable-size irange but int_range<2> doesn't support more than two sub-ranges? So it doesn't look obvious that this isn't actually a regression? Richard. > gcc/ChangeLog: > > * gimple-ssa-warn-access.cc (check_nul_terminated_array): Make > Value_Range an int_range. > (memmodel_to_uhwi): Same > * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Same. > (determine_value_range): Same. > (infer_loop_bounds_from_signedness): Same. > (scev_var_range_cant_overflow): Same. > --- > gcc/gimple-ssa-warn-access.cc | 4 ++-- > gcc/tree-ssa-loop-niter.cc | 12 ++++++------ > 2 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc > index dedaae27b31..450c1caa765 100644 > --- a/gcc/gimple-ssa-warn-access.cc > +++ b/gcc/gimple-ssa-warn-access.cc > @@ -330,7 +330,7 @@ check_nul_terminated_array (GimpleOrTree expr, tree src, > tree bound) > wide_int bndrng[2]; > if (bound) > { > - Value_Range r (TREE_TYPE (bound)); > + int_range<2> r (TREE_TYPE (bound)); > > get_range_query (cfun)->range_of_expr (r, bound); > > @@ -2816,7 +2816,7 @@ memmodel_to_uhwi (tree ord, gimple *stmt, unsigned > HOST_WIDE_INT *cstval) > { > /* Use the range query to determine constant values in the absence > of constant propagation (such as at -O0). */ > - Value_Range rng (TREE_TYPE (ord)); > + int_range<2> rng (TREE_TYPE (ord)); > if (!get_range_query (cfun)->range_of_expr (rng, ord, stmt) > || !rng.singleton_p (&ord)) > return false; > diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc > index c6d010f6d89..cbc9dbc5a1f 100644 > --- a/gcc/tree-ssa-loop-niter.cc > +++ b/gcc/tree-ssa-loop-niter.cc > @@ -214,7 +214,7 @@ refine_value_range_using_guard (tree type, tree var, > get_type_static_bounds (type, mint, maxt); > mpz_init (minc1); > mpz_init (maxc1); > - Value_Range r (TREE_TYPE (varc1)); > + int_range<2> r (TREE_TYPE (varc1)); > /* Setup range information for varc1. */ > if (integer_zerop (varc1)) > { > @@ -368,7 +368,7 @@ determine_value_range (class loop *loop, tree type, tree > var, mpz_t off, > gphi_iterator gsi; > > /* Either for VAR itself... */ > - Value_Range var_range (TREE_TYPE (var)); > + int_range<2> var_range (TREE_TYPE (var)); > get_range_query (cfun)->range_of_expr (var_range, var); > if (var_range.varying_p () || var_range.undefined_p ()) > rtype = VR_VARYING; > @@ -382,7 +382,7 @@ determine_value_range (class loop *loop, tree type, tree > var, mpz_t off, > > /* Or for PHI results in loop->header where VAR is used as > PHI argument from the loop preheader edge. */ > - Value_Range phi_range (TREE_TYPE (var)); > + int_range<2> phi_range (TREE_TYPE (var)); > for (gsi = gsi_start_phis (loop->header); !gsi_end_p (gsi); gsi_next > (&gsi)) > { > gphi *phi = gsi.phi (); > @@ -408,7 +408,7 @@ determine_value_range (class loop *loop, tree type, tree > var, mpz_t off, > involved. */ > if (wi::gt_p (minv, maxv, sgn)) > { > - Value_Range vr (TREE_TYPE (var)); > + int_range<2> vr (TREE_TYPE (var)); > get_range_query (cfun)->range_of_expr (vr, var); > if (vr.varying_p () || vr.undefined_p ()) > rtype = VR_VARYING; > @@ -4367,7 +4367,7 @@ infer_loop_bounds_from_signedness (class loop *loop, > gimple *stmt) > > low = lower_bound_in_type (type, type); > high = upper_bound_in_type (type, type); > - Value_Range r (TREE_TYPE (def)); > + int_range<2> r (TREE_TYPE (def)); > get_range_query (cfun)->range_of_expr (r, def); > if (!r.varying_p () && !r.undefined_p ()) > { > @@ -5426,7 +5426,7 @@ scev_var_range_cant_overflow (tree var, tree step, > class loop *loop) > if (!def_bb || !dominated_by_p (CDI_DOMINATORS, loop->latch, def_bb)) > return false; > > - Value_Range r (TREE_TYPE (var)); > + int_range<2> r (TREE_TYPE (var)); > get_range_query (cfun)->range_of_expr (r, var); > if (r.varying_p () || r.undefined_p ()) > return false; > -- > 2.44.0 >