On Tue, Feb 4, 2025 at 8:42 AM Andrew Pinski <quic_apin...@quicinc.com> wrote: > > r15-4317-ga6f4404689f12 tried to add support for widending optabs > for vec-mode -> scalar-mode but it misunderstood how FOR_EACH_MODE worked, > the limit in this case is not inclusive. Which means setting limit to from, > would cause the loop not be executed at all. This fixes by setting the > limit to be the next mode after from mode. > > Note the original version that added the widening optabs for vec-mode -> > scalar-mode > (https://gcc.gnu.org/pipermail/gcc-patches/2024-October/665021.html) didn't > have this > bug, only the second version with suggested change > (https://gcc.gnu.org/pipermail/gcc-patches/2024-October/665068.html) dud. The > suggested > change missed this issue with FOR_EACH_MODE. > > Bootstrapped and tested on x86_64-linux-gnu.
OK. > PR middle-end/116926 > > gcc/ChangeLog: > > * optabs-query.cc (find_widening_optab_handler_and_mode): Fix > limit for `vec-mode -> scalar-mode` case. > > Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> > --- > gcc/optabs-query.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gcc/optabs-query.cc b/gcc/optabs-query.cc > index 65eeb5d8e51..f5ca98da818 100644 > --- a/gcc/optabs-query.cc > +++ b/gcc/optabs-query.cc > @@ -492,7 +492,7 @@ find_widening_optab_handler_and_mode (optab op, > machine_mode to_mode, > { > gcc_checking_assert (VECTOR_MODE_P (from_mode) > && GET_MODE_INNER (from_mode) < to_mode); > - limit_mode = from_mode; > + limit_mode = GET_MODE_NEXT_MODE (from_mode).require (); > } > else > gcc_checking_assert (GET_MODE_CLASS (from_mode) == GET_MODE_CLASS > (to_mode) > -- > 2.43.0 >