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

--- Comment #20 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #18)
> So I wonder if it makes sense to allow lowpart subregs of any mode when
> the inner mode is integer.

We really really really should make a separate bit_cast rtx code.

Other than that I agree, yes.  But I do fear there will be quite a bit of
fallout from that still, albeit less than with the current patch.

> There's already
> 
>   /* ??? Similarly, e.g. with (subreg:DF (reg:TI)).  Though 
> store_bit_field
>      is the culprit here, and not the backends.  */
>   else if (known_ge (osize, regsize) && known_ge (isize, osize))
>     ;
> 
> where regsize is REGMODE_NATURAL_SIZE (imode) but with a HFmode
> subreg of DImode the known_ge (osize, regsize) doesn't apply
> (I wonder what that condition is about - it looks rather arbitrary).

Very long ago it made sense to consider quantities greater than "regsize"
to take up more than one register.  Nowadays we have normal registers
bigger than "regsize" (which actually is the size of the mode used).

Reply via email to