On Thu, Jun 19, 2025 at 05:59:05PM +0800, Yang Yujie wrote:
> abi_limb_mode and limb_mode were asserted to be the same when
> the target has different endianness for limbs in _BitInts
> and words in objects.  Otherwise, this assertion also held when the
> TYPE_PRECISION of _BitInt type being laid out is less than or equal
> to the precision of abi_limb_mode.
> 
> But in the latter case it stops us from e.g. laying out _BitInt(65)
> with abi_limb_mode == TImode for alignment or sizing while the actual
> limb for lowering stays in DImode.  This patch removes this
> limitation.

That looks like backend bug.
If you want to use TImode for the array cases as the ABI limb and
DImode as the libgcc/lowering size, for _BitInts from 65 to 128 bits
you should just use abi_limb_mode == limb_mode == TImode, i.e. have them
handled like __int128 by the lowering.

        Jakub

Reply via email to