This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Commit: IQ2000: Remove modes from
- From: Nick Clifton <nickc at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 17 Aug 2012 10:48:25 +0100
- Subject: Commit: IQ2000: Remove modes from
Hi Guys,
I am applying the patch below to fix some problems building an
iq2000-elf toolchain. The main problem is that the conditional branch
patterns were specifying a mode for the comparison operator, which then
fails to match the rtl generated by the compiler.
The other problem is that the two extend-and-compare patterns were
running into reload problems when building libstdc++-v3. I have
disabled them until I have time to investigate further.
Cheers
Nick
gcc/ChangeLog
2012-08-17 Nick Clifton <nickc@redhat.com>
* config/iq2000/iq2000.md (cbranchsi4): Remove mode from
comparison and label.
(branch_zero): Likewise.
(branch_zero_inverted): Likewise.
(branch_equality): Likewise.
(branch_equality_inverted): Likewise.
(extend-and-compare): Disable until reload issues can be
resolved.
* config/iq2000/iq2000.c (gen_conditional_branch): Use VOIDmode
for comparison.
(iq2000_function_arg_advance): Remove CONST_CAST2.
Index: gcc/config/iq2000/iq2000.md
===================================================================
--- gcc/config/iq2000/iq2000.md (revision 190466)
+++ gcc/config/iq2000/iq2000.md (working copy)
@@ -1001,10 +1001,10 @@
(define_expand "cbranchsi4"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "ordered_comparison_operator"
- [(match_operand:SI 1 "register_operand")
- (match_operand:SI 2 "reg_or_const_operand")])
- (label_ref (match_operand:SI 3 ""))
+ (match_operator 0 "ordered_comparison_operator"
+ [(match_operand:SI 1 "register_operand")
+ (match_operand:SI 2 "reg_or_const_operand")])
+ (label_ref (match_operand 3 ""))
(pc)))]
""
"
@@ -1019,9 +1019,9 @@
(define_insn "branch_zero"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "cmp_op"
- [(match_operand:SI 2 "register_operand" "d")
- (const_int 0)])
+ (match_operator 0 "cmp_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (const_int 0)])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1040,9 +1040,9 @@
(define_insn "branch_zero_inverted"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "cmp_op"
- [(match_operand:SI 2 "register_operand" "d")
- (const_int 0)])
+ (match_operator 0 "cmp_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (const_int 0)])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
@@ -1063,9 +1063,9 @@
(define_insn "branch_equality"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "equality_op"
- [(match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")])
+ (match_operator 0 "equality_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (match_operand:SI 3 "register_operand" "d")])
(label_ref (match_operand 1 "" ""))
(pc)))]
""
@@ -1084,9 +1084,9 @@
(define_insn "branch_equality_inverted"
[(set (pc)
(if_then_else
- (match_operator:SI 0 "equality_op"
- [(match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")])
+ (match_operator 0 "equality_op"
+ [(match_operand:SI 2 "register_operand" "d")
+ (match_operand:SI 3 "register_operand" "d")])
(pc)
(label_ref (match_operand 1 "" ""))))]
""
@@ -1145,7 +1145,7 @@
(const_int 0))
(match_operand 2 "pc_or_label_operand" "")
(match_operand 3 "pc_or_label_operand" "")))]
- ""
+ "0"
"bb%A2\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
(set_attr "type" "branch")])
@@ -1159,7 +1159,7 @@
(const_int 0))
(match_operand 2 "pc_or_label_operand" "")
(match_operand 3 "pc_or_label_operand" "")))]
- ""
+ "0"
"bb%A3\\t%0(31-%1),%P2%P3"
[(set_attr "length" "4")
(set_attr "type" "branch")])
Index: gcc/config/iq2000/iq2000.c
===================================================================
--- gcc/config/iq2000/iq2000.c (revision 190466)
+++ gcc/config/iq2000/iq2000.c (working copy)
@@ -1076,7 +1076,7 @@
emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
gen_rtx_IF_THEN_ELSE (VOIDmode,
gen_rtx_fmt_ee (test_code,
- mode,
+ VOIDmode,
cmp0, cmp1),
label1, label2)));
}
@@ -1140,7 +1140,7 @@
"function_adv({gp reg found = %d, arg # = %2d, words = %2d}, %4s, ",
cum->gp_reg_found, cum->arg_number, cum->arg_words,
GET_MODE_NAME (mode));
- fprintf (stderr, "%p", CONST_CAST2 (void *, const_tree, type));
+ fprintf (stderr, "%p", type);
fprintf (stderr, ", %d )\n\n", named);
}