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}