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]

[PATCH] Remove unused last argument from {extract,store}_bit_field


Hi!

The total_size argument for store_bit_field and extract_bit_field
seems to be unused for years (well, the function decrease it and pass
it down to recursive calls, but that's it).
Ok to remove it for mainline?
Bootstrapped/regtested on 7 linux arches.

2004-07-09  Jakub Jelinek  <jakub@redhat.com>

	* expr.h (store_bit_field, extract_bit_field): Remove last argument.
	* expmed.c (store_bit_field, extract_bit_field): Remove last
	argument.
	* builtins.c (expand_builtin_signbit): Adjust callers.
	* optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
	* calls.c (store_unaligned_arguments_into_pseudos): Likewise.
	* ifcvt.c (noce_emit_move_insn): Likewise.
	* stmt.c (expand_return): Likewise.
	* expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
	store_field, expand_expr_real_1): Likewise.

--- gcc/builtins.c.jj	2004-07-09 13:50:52.000000000 +0200
+++ gcc/builtins.c	2004-07-09 14:09:04.127421065 +0200
@@ -5603,8 +5603,7 @@ expand_builtin_signbit (tree exp, rtx ta
 	bitpos = GET_MODE_BITSIZE (imode) - 1 - bitpos;
       temp = copy_to_mode_reg (imode, temp);
       temp = extract_bit_field (temp, 1, bitpos, 1,
-				NULL_RTX, rmode, rmode,
-				GET_MODE_SIZE (imode));
+				NULL_RTX, rmode, rmode);
     }
   else
     {
--- gcc/expr.h.jj	2004-07-09 13:50:54.000000000 +0200
+++ gcc/expr.h	2004-07-09 14:07:14.468844804 +0200
@@ -791,12 +791,10 @@ extern enum machine_mode
 mode_for_extraction (enum extraction_pattern, int);
 
 extern rtx store_bit_field (rtx, unsigned HOST_WIDE_INT,
-			    unsigned HOST_WIDE_INT, enum machine_mode, rtx,
-			    HOST_WIDE_INT);
+			    unsigned HOST_WIDE_INT, enum machine_mode, rtx);
 extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
 			      unsigned HOST_WIDE_INT, int, rtx,
-			      enum machine_mode, enum machine_mode,
-			      HOST_WIDE_INT);
+			      enum machine_mode, enum machine_mode);
 extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
 extern bool const_mult_add_overflow_p (rtx, rtx, rtx, enum machine_mode, int);
 extern rtx expand_mult_add (rtx, rtx, rtx, rtx,enum machine_mode, int);
--- gcc/optabs.c.jj	2004-07-09 13:50:55.000000000 +0200
+++ gcc/optabs.c	2004-07-09 14:11:55.724026913 +0200
@@ -1956,12 +1956,12 @@ expand_vector_binop (enum machine_mode m
 	    a = simplify_gen_subreg (submode, op0, mode, i * subsize);
 	  else
 	    a = extract_bit_field (op0, subbitsize, i * subbitsize, unsignedp,
-				   NULL_RTX, submode, submode, size);
+				   NULL_RTX, submode, submode);
 	  if (CONSTANT_P (op1))
 	    b = simplify_gen_subreg (submode, op1, mode, i * subsize);
 	  else
 	    b = extract_bit_field (op1, subbitsize, i * subbitsize, unsignedp,
-				   NULL_RTX, submode, submode, size);
+				   NULL_RTX, submode, submode);
 
 	  if (binoptab->code == DIV)
 	    {
@@ -1982,8 +1982,7 @@ expand_vector_binop (enum machine_mode m
 	  if (t)
 	    emit_move_insn (t, res);
 	  else
-	    store_bit_field (target, subbitsize, i * subbitsize, submode, res,
-			     size);
+	    store_bit_field (target, subbitsize, i * subbitsize, submode, res);
 	}
       break;
 
@@ -2075,15 +2074,14 @@ expand_vector_unop (enum machine_mode mo
 	a = simplify_gen_subreg (submode, op0, mode, i * subsize);
       else
 	a = extract_bit_field (op0, subbitsize, i * subbitsize, unsignedp,
-			       t, submode, submode, size);
+			       t, submode, submode);
 
       res = expand_unop (submode, unoptab, a, t, unsignedp);
 
       if (t)
 	emit_move_insn (t, res);
       else
-	store_bit_field (target, subbitsize, i * subbitsize, submode, res,
-			 size);
+	store_bit_field (target, subbitsize, i * subbitsize, submode, res);
     }
 
   seq = get_insns ();
--- gcc/calls.c.jj	2004-07-09 13:50:53.000000000 +0200
+++ gcc/calls.c	2004-07-09 14:12:30.986781068 +0200
@@ -851,7 +851,7 @@ store_unaligned_arguments_into_pseudos (
 
 	    args[i].aligned_regs[j] = reg;
 	    word = extract_bit_field (word, bitsize, 0, 1, NULL_RTX,
-				      word_mode, word_mode, BITS_PER_WORD);
+				      word_mode, word_mode);
 
 	    /* There is no need to restrict this code to loading items
 	       in TYPE_ALIGN sized hunks.  The bitfield instructions can
@@ -868,7 +868,7 @@ store_unaligned_arguments_into_pseudos (
 
 	    bytes -= bitsize / BITS_PER_UNIT;
 	    store_bit_field (reg, bitsize, endian_correction, word_mode,
-			     word, BITS_PER_WORD);
+			     word);
 	  }
       }
 }
--- gcc/expmed.c.jj	2004-07-09 13:50:54.000000000 +0200
+++ gcc/expmed.c	2004-07-09 14:08:16.977772607 +0200
@@ -297,7 +297,7 @@ mode_for_extraction (enum extraction_pat
 rtx
 store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
 		 unsigned HOST_WIDE_INT bitnum, enum machine_mode fieldmode,
-		 rtx value, HOST_WIDE_INT total_size)
+		 rtx value)
 {
   unsigned int unit
     = (MEM_P (str_rtx)) ? BITS_PER_UNIT : BITS_PER_WORD;
@@ -308,12 +308,6 @@ store_bit_field (rtx str_rtx, unsigned H
 
   enum machine_mode op_mode = mode_for_extraction (EP_insv, 3);
 
-  /* Discount the part of the structure before the desired byte.
-     We need to know how many bytes are safe to reference after it.  */
-  if (total_size >= 0)
-    total_size -= (bitpos / BIGGEST_ALIGNMENT
-		   * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-
   while (GET_CODE (op0) == SUBREG)
     {
       /* The following line once was done only if WORDS_BIG_ENDIAN,
@@ -542,8 +536,7 @@ store_bit_field (rtx str_rtx, unsigned H
 	  store_bit_field (op0, MIN (BITS_PER_WORD,
 				     bitsize - i * BITS_PER_WORD),
 			   bitnum + bit_offset, word_mode,
-			   operand_subword_force (value, wordnum, fieldmode),
-			   total_size);
+			   operand_subword_force (value, wordnum, fieldmode));
 	}
       return value;
     }
@@ -650,8 +643,7 @@ store_bit_field (rtx str_rtx, unsigned H
 	  /* Fetch that unit, store the bitfield in it, then store
 	     the unit.  */
 	  tempreg = copy_to_reg (op0);
-	  store_bit_field (tempreg, bitsize, bitpos, fieldmode, value,
-			   total_size);
+	  store_bit_field (tempreg, bitsize, bitpos, fieldmode, value);
 	  emit_move_insn (op0, tempreg);
 	  return value;
 	}
@@ -1051,8 +1043,7 @@ store_split_bit_field (rtx op0, unsigned
 rtx
 extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
 		   unsigned HOST_WIDE_INT bitnum, int unsignedp, rtx target,
-		   enum machine_mode mode, enum machine_mode tmode,
-		   HOST_WIDE_INT total_size)
+		   enum machine_mode mode, enum machine_mode tmode)
 {
   unsigned int unit
     = (MEM_P (str_rtx)) ? BITS_PER_UNIT : BITS_PER_WORD;
@@ -1067,12 +1058,6 @@ extract_bit_field (rtx str_rtx, unsigned
   enum machine_mode mode1;
   int byte_offset;
 
-  /* Discount the part of the structure before the desired byte.
-     We need to know how many bytes are safe to reference after it.  */
-  if (total_size >= 0)
-    total_size -= (bitpos / BIGGEST_ALIGNMENT
-		   * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-
   if (tmode == VOIDmode)
     tmode = mode;
 
@@ -1286,7 +1271,7 @@ extract_bit_field (rtx str_rtx, unsigned
 	    = extract_bit_field (op0, MIN (BITS_PER_WORD,
 					   bitsize - i * BITS_PER_WORD),
 				 bitnum + bit_offset, 1, target_part, mode,
-				 word_mode, total_size);
+				 word_mode);
 
 	  if (target_part == 0)
 	    abort ();
--- gcc/ifcvt.c.jj	2004-07-09 13:50:55.000000000 +0200
+++ gcc/ifcvt.c	2004-07-09 14:12:59.056809242 +0200
@@ -701,8 +701,7 @@ noce_emit_move_insn (rtx x, rtx y)
   outmode = GET_MODE (outer);
   inmode = GET_MODE (inner);
   bitpos = SUBREG_BYTE (outer) * BITS_PER_UNIT;
-  store_bit_field (inner, GET_MODE_BITSIZE (outmode), bitpos, outmode, y,
-		   GET_MODE_BITSIZE (inmode));
+  store_bit_field (inner, GET_MODE_BITSIZE (outmode), bitpos, outmode, y);
 }
 
 /* Return sequence of instructions generated by if conversion.  This
--- gcc/stmt.c.jj	2004-07-09 13:50:56.000000000 +0200
+++ gcc/stmt.c	2004-07-09 14:10:51.637378212 +0200
@@ -2115,9 +2115,7 @@ expand_return (tree retval)
 	  store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
 			   extract_bit_field (src, bitsize,
 					      bitpos % BITS_PER_WORD, 1,
-					      NULL_RTX, word_mode, word_mode,
-					      BITS_PER_WORD),
-			   BITS_PER_WORD);
+					      NULL_RTX, word_mode, word_mode));
 	}
 
       tmpmode = GET_MODE (result_rtl);
--- gcc/expr.c.jj	2004-07-09 13:50:54.000000000 +0200
+++ gcc/expr.c	2004-07-09 14:10:10.088737538 +0200
@@ -1886,7 +1886,7 @@ emit_group_load (rtx dst, rtx orig_src, 
 		  && (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode))
 		tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
 					     (bytepos % slen0) * BITS_PER_UNIT,
-					     1, NULL_RTX, mode, mode, ssize);
+					     1, NULL_RTX, mode, mode);
 	    }
 	  else if (bytepos == 0)
 	    {
@@ -1919,7 +1919,7 @@ emit_group_load (rtx dst, rtx orig_src, 
       else
 	tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
 				     bytepos * BITS_PER_UNIT, 1, NULL_RTX,
-				     mode, mode, ssize);
+				     mode, mode);
 
       if (shift)
 	tmps[i] = expand_shift (LSHIFT_EXPR, mode, tmps[i],
@@ -2073,7 +2073,7 @@ emit_group_store (rtx orig_dst, rtx src,
 	emit_move_insn (adjust_address (dest, mode, bytepos), tmps[i]);
       else
 	store_bit_field (dest, bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT,
-			 mode, tmps[i], ssize);
+			 mode, tmps[i]);
     }
 
   emit_queue ();
@@ -2159,9 +2159,7 @@ copy_blkmode_from_reg (rtx tgtblk, rtx s
       store_bit_field (dst, bitsize, bitpos % BITS_PER_WORD, word_mode,
 		       extract_bit_field (src, bitsize,
 					  xbitpos % BITS_PER_WORD, 1,
-					  NULL_RTX, word_mode, word_mode,
-					  BITS_PER_WORD),
-		       BITS_PER_WORD);
+					  NULL_RTX, word_mode, word_mode));
     }
 
   return tgtblk;
@@ -5445,8 +5443,7 @@ store_field (rtx target, HOST_WIDE_INT b
 	}
 
       /* Store the value in the bitfield.  */
-      store_bit_field (target, bitsize, bitpos, mode, temp,
-		       int_size_in_bytes (type));
+      store_bit_field (target, bitsize, bitpos, mode, temp);
 
       if (value_mode != VOIDmode)
 	{
@@ -5473,8 +5470,7 @@ store_field (rtx target, HOST_WIDE_INT b
 	    }
 
 	  return extract_bit_field (target, bitsize, bitpos, unsignedp,
-				    NULL_RTX, value_mode, VOIDmode,
-				    int_size_in_bytes (type));
+				    NULL_RTX, value_mode, VOIDmode);
 	}
       return const0_rtx;
     }
@@ -7286,8 +7282,7 @@ expand_expr_real_1 (tree exp, rtx target
 	    op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp,
 				     (modifier == EXPAND_STACK_PARM
 				      ? NULL_RTX : target),
-				     ext_mode, ext_mode,
-				     int_size_in_bytes (TREE_TYPE (tem)));
+				     ext_mode, ext_mode);
 
 	    /* If the result is a record type and BITSIZE is narrower than
 	       the mode of OP0, an integral mode, and this is a big endian

	Jakub


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