On Thu, Sep 25, 2025 at 10:23:44AM +0100, Andre Vieira wrote:
> 
> This patch fixes an issue where the first call to bitint_precision_kind would
> return the bitint kind, which was also inconsistent with subsequent calls with
> the same bitint size.

Please add a ChangeLog entry for this and commit it separately from the
rest.
LGTM for trunk.

> diff --git a/gcc/gimple-lower-bitint.cc b/gcc/gimple-lower-bitint.cc
> index 01ce5487b25..28802e3b4aa 100644
> --- a/gcc/gimple-lower-bitint.cc
> +++ b/gcc/gimple-lower-bitint.cc
> @@ -105,7 +105,7 @@ bitint_precision_kind (int prec)
>    bitint_big_endian = info.big_endian;
>    bitint_extended = info.extended;
>    if (!large_min_prec
> -      && GET_MODE_PRECISION (limb_mode) < MAX_FIXED_MODE_SIZE)
> +      && GET_MODE_PRECISION (limb_mode) <= MAX_FIXED_MODE_SIZE)
>      large_min_prec = MAX_FIXED_MODE_SIZE + 1;
>    if (!limb_prec)
>      limb_prec = GET_MODE_PRECISION (limb_mode);
> @@ -125,9 +125,9 @@ bitint_precision_kind (int prec)
>       mid_min_prec = prec;
>        return bitint_prec_middle;
>      }
> -  if (large_min_prec && prec <= large_min_prec)
> -    return bitint_prec_large;
> -  return bitint_prec_huge;
> +  if (huge_min_prec && prec >= huge_min_prec)
> +    return bitint_prec_huge;
> +  return bitint_prec_large;
>  }
>  
>  /* Same for a TYPE.  */

        Jakub

Reply via email to