https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #269 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
(In reply to Kazumoto Kojima from comment #267)
> (In reply to Oleg Endo from comment #264)
> > Very nice! So it seems indeed, splitting up the "mega move patterns" into
> > simpler ones where predicates are more closer to the actual constraints give
> > better results (if I'm not mistaken). Have you also tried using these
> > patterns without LRA? I'm just wondering if we need to distinguish between
> > LRA/non-LRA case at all.
>
> I'll give it a try and report back.
Unfortunately, it doesn't seem to work. It can build target libgcc/libstdc++v3
libs, but I got the our old friend when compiling
gcc.c-torture/compile/20031220-2.c with -O2
... error: unable to find a register to spill in class 'R0_REGS'
... error: this is the insn:
(insn 4 27 158 6 (parallel [
(set (reg/v:SF 174 [ h ])
(const_double:SF 5.0e-1 [0x0.8p+0]))
(use (reg:SI 154 fpscr0))
(clobber (reg:SI 0 r0))
]) "/git/gcc/gcc/testsuite/gcc.c-torture/compile/20031220-2.c":27:11
233
{movsf_ie}