------- Comment #4 from kkojima at gcc dot gnu dot org 2006-11-07 02:40 ------- If the comparison with a constant is removed from cbranchdi4_i, the 2nd test case and the original ifcvt.c are compiled successfully.
--- ORIG/trunk/gcc/config/sh/sh.md 2006-11-05 10:02:45.000000000 +0900 +++ TMP/trunk/gcc/config/sh/sh.md 2006-11-07 09:34:22.000000000 +0900 @@ -713,11 +713,11 @@ (define_insn_and_split "cbranchdi4_i" [(set (pc) (if_then_else (match_operator 0 "comparison_operator" - [(match_operand:DI 1 "arith_operand" "r,r") - (match_operand:DI 2 "arith_operand" "rN,i")]) + [(match_operand:DI 1 "arith_operand" "r") + (match_operand:DI 2 "arith_operand" "rN")]) (label_ref (match_operand 3 "" "")) (pc))) - (clobber (match_scratch:SI 4 "=X,&r")) + (clobber (match_scratch:SI 4 "=X")) (clobber (reg:SI T_REG))] "TARGET_CBRANCHDI4" "#" -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29746