https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102989

--- Comment #60 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #59)
> Oh, so BITINT_TYPE is INTEGRAL_TYPE_P but not INTEGER_TYPE (I think we
> don't have any BLKmode integer types?).

Yes.  Some BITINT_TYPEs have BLKmode.

> I think the intent was to
> restrict the operation on actual mode entities, BLKmode means memory
> where it isn't necessary to restrict things.  So you could add
> a BLKmode exception here (but then for _BitInt<63> you will likely
> get DImode?)

Sure, _BitInt<63> has DImode, _BitInt<127> has TImode if it is supported.
TYPE_MODE is set according to the rules for structures (so that it would help
with function_arg etc. implementation on some targets), so I think say OImode
for _BitInt<254> isn't impossible.

> Can't you use a MEM_REF to extract limb-size INTEGER_TYPE from the
> _BitInt<> and then operate on those with BIT_FIELD_REF and BIT_INSERT_EXPR?
> Of course when the whole _BitInt<> is a SSA name MEM_REF won't work
> (but when you use ARRAY_REF/VIEW_CONVERT the same holds true)

I wanted to avoid forcing the smaller _BitInt results into VAR_DECLs and only
do it
for the ones where I'd use loops (the huge category).
The plan for loops is to do 2 limbs per iteration initially, plus if there is
odd number of limbs or even with partial limb 1-2 limbs done after the loop. 
So, the large
category where loop isn't used would be up to 3 full limbs or 3 full limbs + 1
partial.

Reply via email to