Hi Guys, I am applying the patch below to fix building libgcc for the fr30-elf target. The problem was that the comparison patterns were applying a mode to the operator which prevents them from matching rtl generated by the middle-end.
Cheers Nick gcc/ChangeLog 2012-08-17 Nick Clifton <ni...@redhat.com> * config/fr30/fr30.md (cbranchsi4): Remove mode from comparison. (branch_true): Likewise. (branch_false): Likewise. Index: gcc/config/fr30/fr30.md =================================================================== --- gcc/config/fr30/fr30.md (revision 190466) +++ gcc/config/fr30/fr30.md (working copy) @@ -940,7 +940,7 @@ (compare:CC (match_operand:SI 1 "register_operand" "") (match_operand:SI 2 "nonmemory_operand" ""))) (set (pc) - (if_then_else (match_operator:CC 0 "ordered_comparison_operator" + (if_then_else (match_operator 0 "ordered_comparison_operator" [(reg:CC 16) (const_int 0)]) (label_ref (match_operand 3 "" "")) (pc)))] @@ -980,9 +980,9 @@ (define_insn "*branch_true" [(set (pc) - (if_then_else (match_operator:CC 0 "comparison_operator" - [(reg:CC 16) - (const_int 0)]) + (if_then_else (match_operator 0 "comparison_operator" + [(reg:CC 16) + (const_int 0)]) (label_ref (match_operand 1 "" "")) (pc)))] "" @@ -1034,9 +1034,9 @@ ;; branch occurs if the test is false, so the %B operator is used. (define_insn "*branch_false" [(set (pc) - (if_then_else (match_operator:CC 0 "comparison_operator" - [(reg:CC 16) - (const_int 0)]) + (if_then_else (match_operator 0 "comparison_operator" + [(reg:CC 16) + (const_int 0)]) (pc) (label_ref (match_operand 1 "" ""))))] ""