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