https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #21 from Kazumoto Kojima <kkojima at gcc dot gnu.org> --- I've run check-gcc for sh-lra branch on sh4-unknown-linux-gnu and got === gcc Summary === # of expected passes 83035 # of unexpected failures 169 # of unexpected successes 1 # of expected failures 119 # of unresolved testcases 45 # of unsupported tests 1514 It looks that 3 new kind of ICEs except the ICE in #c18 which causes ~100 failures. ~50 failures are internal compiler error: in assign_by_spills, at lra-assigns.c:1335 which may be similar with mips's PR61610. The typical example is c-c++-common/torture/complex-sign-add.c -O2. There are some unrecognizable insn errors for the rtl like (insn 11 10 12 2 (set (reg/f:SI 166) (mem/f/j:SI (plus:SI (subreg:SI (reg/v:DI 162 [ s1 ]) 0) (const_int 4 [0x4])) [0 _5->m+0 S4 A32])) It seems that the patch in #c11 should take account of subregs. The example of another type of new failures is gcc.c-torture/execute/20040703-1.c:127:1: error: could not split insn (insn 118 112 119 (parallel [ (set (reg:SI 9 r9 [orig:253 D.1616 ] [253]) (xor:SI (zero_extend:SI (reg:QI 147 t)) (const_int 1 [0x1]))) (clobber (reg:SI 1 r1 [287])) (clobber (reg:SI 147 t)) ]) gcc.c-torture/execute/20040703-1.c:54 401 {*movrt_negc} It looks that LRA substitutes (zero_extend:SI (subreg:QI (reg:SI 147 t) 0)) with (zero_extend:SI (reg:QI 147 t)) in this case.