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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #2)
>               unsigned buflen = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (vr->type))
> + 1;
>               if (INTEGRAL_TYPE_P (vr->type))
>                 buflen = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (vr->type)) + 1;
> 
> there's other spots using the pattern
> 
>                       if (INTEGRAL_TYPE_P (type))
>                         sz = GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (type));
> 
> I wonder when GET_MODE_SIZE differs from TYPE_SIZE_UNIT?  PSImode?

I'm afraid I don't know either.

> Packed bitfields?  r10-6885-g5f9cd512c42786 added the INTEGRAL_TYPE_P
> special-casing we now run into with the TYPE_SIZE_UNIT code being there
> before.
> 
> Jakub, do you remember?

I bet the above comes from what the native_{encode,interpret}_int has been
doing (and which has been tweaked for BITINT_TYPE).
If we don't want to throw it away, we could just change it to
if (INTEGRAL_TYPE_P (...) && TYPE_MODE (...) != BLKmode)

Reply via email to