On sh4-*-linux-gnu, gcc.c-torture/compile/20011109-1.c with -O1 starts to fail:
testsuite/gcc.c-torture/compile/20011109-1.c:51: error: unrecognizable insn: (insn 26 25 232 4 (parallel [ (set (reg:SI 248) (gt:SI (reg:DF 246) (reg:DF 247))) (use (reg/v:PSI 151 )) ]) -1 (insn_list:REG_DEP_TRUE 24 (insn_list:REG_DEP_TRUE 25 (nil))) (nil)) after -fmove-loop-invariants is enabled by default. SH backend defines set insns whose destinations are the hard reg like T_REG and R0_REG. It seems that move_loop_invariants makes such pattern into (set pseudo_reg_A ...) + (set hard_reg pseudo_reg_A) and then the former insn fails to be recognized. -- Summary: FAIL: gcc.c-torture/compile/20011109-1.c,-O1 Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kkojima at gcc dot gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: sh4-*-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26254