Patchwork Commit: IQ2000: Remove modes from

login
register
mail settings
Submitter Nick Clifton
Date Aug. 17, 2012, 9:48 a.m.
Message ID <87pq6psvbq.fsf@redhat.com>
Download mbox | patch
Permalink /patch/178179/
State New
Headers show

Comments

Nick Clifton - Aug. 17, 2012, 9:48 a.m.
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.

Patch

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);
     }