This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[AVR] Remove dead code in avr.c


Hi,

This patch remove dead code in avr.c

2006-11-06  Anatoly Sokolov <aesok@post.ru>

	* config/avr/avr-protos.h (mask_one_bit_p, const_int_pow2_p): Remove 
	prototype.
	* config/avr/avr.c (mask_one_bit_p, const_int_pow2_p): Remove.
	(output_movhi, ashlhi3_out, ashlsi3_out, ashrhi3_out, ashrsi3_out,
	lshrhi3_out, lshrsi3_out): Remove unnecessary code for handling value
	which start in an odd register.

Ahatoly.

Index: gcc/config/avr/avr-protos.h
===================================================================
--- gcc/config/avr/avr-protos.h	(revision 118397)
+++ gcc/config/avr/avr-protos.h	(working copy)
@@ -36,7 +36,6 @@
 extern void order_regs_for_local_alloc (void);
 extern int initial_elimination_offset (int from, int to);
 extern int avr_simple_epilogue (void);
-extern int mask_one_bit_p (HOST_WIDE_INT mask);
 extern void gas_output_limited_string (FILE *file, const char *str);
 extern void gas_output_ascii (FILE *file, const char *str, size_t length);
 
@@ -122,7 +121,6 @@
 extern void out_shift_with_cnt (const char *template, rtx insn,
 				rtx operands[], int *len, int t_len);
 extern int avr_io_address_p (rtx x, int size);
-extern int const_int_pow2_p (rtx x);
 extern int avr_peep2_scratch_safe (rtx reg_rtx);
 #endif /* RTX_CODE */
 
Index: gcc/config/avr/avr.c
===================================================================
--- gcc/config/avr/avr.c	(revision 118397)
+++ gcc/config/avr/avr.c	(working copy)
@@ -1669,13 +1669,6 @@
 	      *l = 1;
 	      return (AS2 (movw,%0,%1));
 	    }
-
-	  if (true_regnum (dest) > true_regnum (src))
-	    {
-	      *l = 2;
-	      return (AS2 (mov,%B0,%B1) CR_TAB
-		      AS2 (mov,%A0,%A1));
-	    }
 	  else
 	    {
 	      *l = 2;
@@ -3133,11 +3126,8 @@
 		  AS1 (ror,%A0));
 
 	case 8:
-	  if (true_regnum (operands[0]) + 1 == true_regnum (operands[1]))
-	    return *len = 1, AS1 (clr,%A0);
-	  else
-	    return *len = 2, (AS2 (mov,%B0,%A1) CR_TAB
-			      AS1 (clr,%A0));
+	  return *len = 2, (AS2 (mov,%B0,%A1) CR_TAB
+			    AS1 (clr,%A0));
 
 	case 9:
 	  *len = 3;
@@ -3329,11 +3319,6 @@
 		      AS2 (mov,%C0,%B1)  CR_TAB
 		      AS2 (mov,%B0,%A1)  CR_TAB
 		      AS1 (clr,%A0));
-	    else if (reg0 + 1 == reg1)
-	      {
-		*len = 1;
-		return AS1 (clr,%A0);
-	      }
 	    else
 	      return (AS1 (clr,%A0)      CR_TAB
 		      AS2 (mov,%B0,%A1)  CR_TAB
@@ -3345,46 +3330,26 @@
 	  {
 	    int reg0 = true_regnum (operands[0]);
 	    int reg1 = true_regnum (operands[1]);
-	    *len = 4;
-	    if (AVR_HAVE_MOVW && (reg0 + 2 != reg1))
-	      {
-		*len = 3;
-		return (AS2 (movw,%C0,%A1) CR_TAB
-			AS1 (clr,%B0)      CR_TAB
-			AS1 (clr,%A0));
-	      }
-	    if (reg0 + 1 >= reg1)
-	      return (AS2 (mov,%D0,%B1)  CR_TAB
-		      AS2 (mov,%C0,%A1)  CR_TAB
-		      AS1 (clr,%B0)      CR_TAB
-		      AS1 (clr,%A0));
 	    if (reg0 + 2 == reg1)
-	      {
-		*len = 2;
-		return (AS1 (clr,%B0)      CR_TAB
-			AS1 (clr,%A0));
-	      }
+	      return *len = 2, (AS1 (clr,%B0)      CR_TAB
+				AS1 (clr,%A0));
+	    if (AVR_HAVE_MOVW)
+	      return *len = 3, (AS2 (movw,%C0,%A1) CR_TAB
+				AS1 (clr,%B0)      CR_TAB
+				AS1 (clr,%A0));
 	    else
-	      return (AS2 (mov,%C0,%A1)  CR_TAB
-		      AS2 (mov,%D0,%B1)  CR_TAB
-		      AS1 (clr,%B0)      CR_TAB
-		      AS1 (clr,%A0));
+	      return *len = 4, (AS2 (mov,%C0,%A1)  CR_TAB
+				AS2 (mov,%D0,%B1)  CR_TAB
+				AS1 (clr,%B0)      CR_TAB
+				AS1 (clr,%A0));
 	  }
 
 	case 24:
 	  *len = 4;
-	  if (true_regnum (operands[0]) + 3 != true_regnum (operands[1]))
-	    return (AS2 (mov,%D0,%A1)  CR_TAB
-		    AS1 (clr,%C0)      CR_TAB
-		    AS1 (clr,%B0)      CR_TAB
-		    AS1 (clr,%A0));
-	  else
-	    {
-	      *len = 3;
-	      return (AS1 (clr,%C0)      CR_TAB
-		      AS1 (clr,%B0)      CR_TAB
-		      AS1 (clr,%A0));
-	    }
+	  return (AS2 (mov,%D0,%A1)  CR_TAB
+		  AS1 (clr,%C0)      CR_TAB
+		  AS1 (clr,%B0)      CR_TAB
+		  AS1 (clr,%A0));
 
 	case 31:
 	  *len = 6;
@@ -3528,15 +3493,11 @@
 	      return *len = 3, (AS2 (mov,%A0,%B0) CR_TAB
 				AS1 (lsl,%B0)     CR_TAB
 				AS2 (sbc,%B0,%B0));
-	    else if (reg0 == reg1 + 1)
-	      return *len = 3, (AS1 (clr,%B0)    CR_TAB
-				AS2 (sbrc,%A0,7) CR_TAB
-				AS1 (dec,%B0));
-
-	    return *len = 4, (AS2 (mov,%A0,%B1) CR_TAB
-			      AS1 (clr,%B0)     CR_TAB
-			      AS2 (sbrc,%A0,7)  CR_TAB
-			      AS1 (dec,%B0));
+	    else 
+	      return *len = 4, (AS2 (mov,%A0,%B1) CR_TAB
+			        AS1 (clr,%B0)     CR_TAB
+			        AS2 (sbrc,%A0,7)  CR_TAB
+			        AS1 (dec,%B0));
 	  }
 
 	case 9:
@@ -3672,13 +3633,6 @@
 		      AS1 (clr,%D0)     CR_TAB
 		      AS2 (sbrc,%C0,7)  CR_TAB
 		      AS1 (dec,%D0));
-	    else if (reg0 == reg1 + 1)
-	      {
-		*len = 3;
-		return (AS1 (clr,%D0)     CR_TAB
-			AS2 (sbrc,%C0,7)  CR_TAB
-			AS1 (dec,%D0));
-	      }
 	    else
 	      return (AS1 (clr,%D0)     CR_TAB
 		      AS2 (sbrc,%D1,7)  CR_TAB
@@ -3692,51 +3646,34 @@
 	  {
 	    int reg0 = true_regnum (operands[0]);
 	    int reg1 = true_regnum (operands[1]);
-	    *len=6;
-	    if (AVR_HAVE_MOVW && (reg0 != reg1 + 2))
-	      {
-		*len = 5;
-		return (AS2 (movw,%A0,%C1) CR_TAB
-			AS1 (clr,%D0)      CR_TAB
-			AS2 (sbrc,%B0,7)   CR_TAB
-			AS1 (com,%D0)      CR_TAB
-			AS2 (mov,%C0,%D0));
-	      }
-	    if (reg0 <= reg1 + 1)
-	      return (AS2 (mov,%A0,%C1) CR_TAB
-		      AS2 (mov,%B0,%D1) CR_TAB
-		      AS1 (clr,%D0)     CR_TAB
-		      AS2 (sbrc,%B0,7)  CR_TAB
-		      AS1 (com,%D0)     CR_TAB
-		      AS2 (mov,%C0,%D0));
-	    else if (reg0 == reg1 + 2)
+	    
+	    if (reg0 == reg1 + 2)
 	      return *len = 4, (AS1 (clr,%D0)     CR_TAB
 				AS2 (sbrc,%B0,7)  CR_TAB
 				AS1 (com,%D0)     CR_TAB
 				AS2 (mov,%C0,%D0));
-	    else
-	      return (AS2 (mov,%B0,%D1) CR_TAB
-		      AS2 (mov,%A0,%C1) CR_TAB
-		      AS1 (clr,%D0)     CR_TAB
-		      AS2 (sbrc,%B0,7)  CR_TAB
-		      AS1 (com,%D0)     CR_TAB
-		      AS2 (mov,%C0,%D0));
+	    if (AVR_HAVE_MOVW)
+	      return *len = 5, (AS2 (movw,%A0,%C1) CR_TAB
+				AS1 (clr,%D0)      CR_TAB
+				AS2 (sbrc,%B0,7)   CR_TAB
+				AS1 (com,%D0)      CR_TAB
+				AS2 (mov,%C0,%D0));
+	    else 
+	      return *len = 6, (AS2 (mov,%B0,%D1) CR_TAB
+				AS2 (mov,%A0,%C1) CR_TAB
+				AS1 (clr,%D0)     CR_TAB
+				AS2 (sbrc,%B0,7)  CR_TAB
+				AS1 (com,%D0)     CR_TAB
+				AS2 (mov,%C0,%D0));
 	  }
 
 	case 24:
-	  if (true_regnum (operands[0]) != true_regnum (operands[1]) + 3)
-	    return *len = 6, (AS2 (mov,%A0,%D1) CR_TAB
-			      AS1 (clr,%D0)     CR_TAB
-			      AS2 (sbrc,%A0,7)  CR_TAB
-			      AS1 (com,%D0)     CR_TAB
-			      AS2 (mov,%B0,%D0) CR_TAB
-			      AS2 (mov,%C0,%D0));
-	  else
-	    return *len = 5, (AS1 (clr,%D0)     CR_TAB
-			      AS2 (sbrc,%A0,7)  CR_TAB
-			      AS1 (com,%D0)     CR_TAB
-			      AS2 (mov,%B0,%D0) CR_TAB
-			      AS2 (mov,%C0,%D0));
+	  return *len = 6, (AS2 (mov,%A0,%D1) CR_TAB
+			    AS1 (clr,%D0)     CR_TAB
+			    AS2 (sbrc,%A0,7)  CR_TAB
+			    AS1 (com,%D0)     CR_TAB
+			    AS2 (mov,%B0,%D0) CR_TAB
+			    AS2 (mov,%C0,%D0));
 
 	default:
 	  if (INTVAL (operands[2]) < 32)
@@ -3966,11 +3903,8 @@
 		  AS1 (neg,%B0));
 
 	case 8:
-	  if (true_regnum (operands[0]) != true_regnum (operands[1]) + 1)
-	    return *len = 2, (AS2 (mov,%A0,%B1) CR_TAB
-			      AS1 (clr,%B0));
-	  else
-	    return *len = 1, AS1 (clr,%B0);
+	  return *len = 2, (AS2 (mov,%A0,%B1) CR_TAB
+			    AS1 (clr,%B0));
 
 	case 9:
 	  *len = 3;
@@ -4161,8 +4095,6 @@
 		      AS2 (mov,%B0,%C1) CR_TAB
 		      AS2 (mov,%C0,%D1) CR_TAB
 		      AS1 (clr,%D0));
-	    else if (reg0 == reg1 + 1)
-	      return *len = 1, AS1 (clr,%D0);
 	    else
 	      return (AS1 (clr,%D0)     CR_TAB
 		      AS2 (mov,%C0,%D1) CR_TAB
@@ -4174,39 +4106,26 @@
 	  {
 	    int reg0 = true_regnum (operands[0]);
 	    int reg1 = true_regnum (operands[1]);
-	    *len = 4;
-	    if (AVR_HAVE_MOVW && (reg0 != reg1 + 2))
-	      {
-		*len = 3;
-		return (AS2 (movw,%A0,%C1) CR_TAB
-			AS1 (clr,%C0)      CR_TAB
-			AS1 (clr,%D0));
-	      }
-	    if (reg0 <= reg1 + 1)
-	      return (AS2 (mov,%A0,%C1) CR_TAB
-		      AS2 (mov,%B0,%D1) CR_TAB
-		      AS1 (clr,%C0)     CR_TAB
-		      AS1 (clr,%D0));
-	    else if (reg0 == reg1 + 2)
+
+	    if (reg0 == reg1 + 2)
 	      return *len = 2, (AS1 (clr,%C0)     CR_TAB
 				AS1 (clr,%D0));
+	    if (AVR_HAVE_MOVW)
+	      return *len = 3, (AS2 (movw,%A0,%C1) CR_TAB
+				AS1 (clr,%C0)      CR_TAB
+				AS1 (clr,%D0));
 	    else
-	      return (AS2 (mov,%B0,%D1) CR_TAB
-		      AS2 (mov,%A0,%C1) CR_TAB
-		      AS1 (clr,%C0)     CR_TAB
-		      AS1 (clr,%D0));
+	      return *len = 4, (AS2 (mov,%B0,%D1) CR_TAB
+				AS2 (mov,%A0,%C1) CR_TAB
+				AS1 (clr,%C0)     CR_TAB
+				AS1 (clr,%D0));
 	  }
 	  
 	case 24:
-	  if (true_regnum (operands[0]) != true_regnum (operands[1]) + 3)
-	    return *len = 4, (AS2 (mov,%A0,%D1) CR_TAB
-			      AS1 (clr,%B0)     CR_TAB
-			      AS1 (clr,%C0)     CR_TAB
-			      AS1 (clr,%D0));
-	  else
-	    return *len = 3, (AS1 (clr,%B0)     CR_TAB
-			      AS1 (clr,%C0)     CR_TAB
-			      AS1 (clr,%D0));
+	  return *len = 4, (AS2 (mov,%A0,%D1) CR_TAB
+			    AS1 (clr,%B0)     CR_TAB
+			    AS1 (clr,%C0)     CR_TAB
+			    AS1 (clr,%D0));
 
 	case 31:
 	  *len = 6;
@@ -5658,28 +5577,6 @@
   return gen_rtx_REG (BLKmode, RET_REGISTER + 2 - offs);
 }
 
-/* Returns nonzero if the number MASK has only one bit set.  */
-
-int
-mask_one_bit_p (HOST_WIDE_INT mask)
-{
-  int i;
-  unsigned HOST_WIDE_INT n=mask;
-  for (i = 0; i < 32; ++i)
-    {
-      if (n & 0x80000000L)
-	{
-	  if (n & 0x7fffffffL)
-	    return 0;
-	  else
-	    return 32-i;
-	}
-      n<<=1;
-    }
-  return 0; 
-}
-
-
 /* Places additional restrictions on the register class to
    use when it is necessary to copy value X into a register
    in class CLASS.  */
@@ -5753,20 +5650,6 @@
 	  && INTVAL (x) >= 0x20 && INTVAL (x) <= 0x60 - size);
 }
 
-/* Returns nonzero (bit number + 1) if X, or -X, is a constant power of 2.  */
-
-int
-const_int_pow2_p (rtx x)
-{
-  if (GET_CODE (x) == CONST_INT)
-    {
-      HOST_WIDE_INT d = INTVAL (x);
-      HOST_WIDE_INT abs_d = (d >= 0) ? d : -d;
-      return exact_log2 (abs_d) + 1;
-    }
-  return 0;
-}
-
 const char *
 output_reload_inhi (rtx insn ATTRIBUTE_UNUSED, rtx *operands, int *len)
 {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]