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
>

Reply via email to