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

--- Comment #24 from rguenther at suse dot de <rguenther at suse dot de> ---
On Fri, 10 Sep 2021, segher at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102154
> 
> --- Comment #23 from Segher Boessenkool <segher at gcc dot gnu.org> ---
> (In reply to rguent...@suse.de from comment #21)
> > > /home/seurer/gcc/git/gcc-test/libgo/go/strconv/atof.go:704:1: error:
> > > unrecognizable insn:
> > >   704 | func parseFloatPrefix(s string, bitSize int) (float64, int, 
> > > error) {
> > >       | ^
> > > (insn 351 350 352 35 (set (reg:SF 219 [ SR.5776 ])
> > >         (subreg:SF (reg:DI 237 [ GOTMP.360 ]) 0))
> > 
> > Btw, I think this is a subreg that would be reasonable to handle.
> > It's exactly the kind that x86 would like to allow, (subreg:HF (reg:SI 
> > ..) 0).
> 
> And it is more than reasonable for backends to *not* have to handle such
> constructs.  Most targets have no use for such surprising things.
> 
> The expander should never create such code in the first place, it is premature
> optimisation!  At expand time this should be separate statements, first taking
> a SI out of a DI, and then converting it to an SF.

Fair enough - but extract_bit_field doesn't do this and forcing it to do
it regresses things (that was my first preferential treatment...).

I realize that the situation around subregs is fragile and there's
unlikely going to be a solution that doesn't need fixes in other targets.

Reply via email to