On Tue, May 20, 2025 at 11:29:11AM +0800, Yang Yujie wrote:
> gcc/ChangeLog:
> 
>       * stor-layout.cc (layout_type): Allow limb_mode to be DImode
>       while abi_limb_mode is TImode for _BitInt(N), N > 64.
> ---
>  gcc/stor-layout.cc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/stor-layout.cc b/gcc/stor-layout.cc
> index 18b5af56124..75997f531c1 100644
> --- a/gcc/stor-layout.cc
> +++ b/gcc/stor-layout.cc
> @@ -2480,7 +2480,8 @@ layout_type (tree type)
>       if (TYPE_PRECISION (type) <= GET_MODE_PRECISION (limb_mode))
>         {
>           SET_TYPE_MODE (type, limb_mode);
> -         gcc_assert (info.abi_limb_mode == info.limb_mode);
> +         gcc_assert (info.abi_limb_mode == info.limb_mode
> +                     || !info.big_endian == !WORDS_BIG_ENDIAN);
>           cnt = 1;
>         }
>       else

Why do you need this?
The assert isn't for your N > 64 case, but for the N <= 64 one.
And wants to ensure that for those cases (i.e. where there is exactly
one limb) both modes are the same.
>From what I can see, you only change abi_limb_mode for n > 64 in
your backend.

        Jakub

Reply via email to