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]

[4/4] Using gen_int_mode instead of GEN_INT


Similar to patch 1, but here the calls are involved in a SET instruction
(or equivalent) and are cases where the operand must have the same mode as
the SET destination.

Tested in the same way as before.  OK to install?

Thanks,
Richard


gcc/
	* asan.c (asan_emit_stack_protection): Use gen_int_mode instead of
	GEN_INT.
	* builtins.c (expand_errno_check): Likewise.
	* dwarf2cfi.c (init_return_column_size): Likewise.
	* except.c (sjlj_mark_call_sites): Likewise.
	* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
	* lra-constraints.c (emit_inc): Likewise.
	* ree.c (combine_set_extension): Likewise.
	* regmove.c (fixup_match_2): Likewise.
	* reload1.c (inc_for_reload): Likewise.

Index: gcc/asan.c
===================================================================
--- gcc/asan.c	2013-09-09 10:55:59.743537289 +0100
+++ gcc/asan.c	2013-09-09 11:06:25.029673768 +0100
@@ -966,15 +966,15 @@ asan_emit_stack_protection (rtx base, HO
   str_cst = asan_pp_string (&asan_pp);
 
   /* Emit the prologue sequence.  */
   base = expand_binop (Pmode, add_optab, base,
 		       gen_int_mode (base_offset, Pmode),
 		       NULL_RTX, 1, OPTAB_DIRECT);
   mem = gen_rtx_MEM (ptr_mode, base);
-  emit_move_insn (mem, GEN_INT (ASAN_STACK_FRAME_MAGIC));
+  emit_move_insn (mem, gen_int_mode (ASAN_STACK_FRAME_MAGIC, ptr_mode));
   mem = adjust_address (mem, VOIDmode, GET_MODE_SIZE (ptr_mode));
   emit_move_insn (mem, expand_normal (str_cst));
   shadow_base = expand_binop (Pmode, lshr_optab, base,
 			      GEN_INT (ASAN_SHADOW_SHIFT),
 			      NULL_RTX, 1, OPTAB_DIRECT);
   shadow_base = expand_binop (Pmode, add_optab, shadow_base,
 			      gen_int_mode (targetm.asan_shadow_offset (),
Index: gcc/builtins.c
===================================================================
--- gcc/builtins.c	2013-09-09 10:55:59.747537322 +0100
+++ gcc/builtins.c	2013-09-09 11:06:25.030673776 +0100
@@ -1963,15 +1963,16 @@ expand_errno_check (tree exp, rtx target
     {
 #ifdef GEN_ERRNO_RTX
       rtx errno_rtx = GEN_ERRNO_RTX;
 #else
       rtx errno_rtx
 	  = gen_rtx_MEM (word_mode, gen_rtx_SYMBOL_REF (Pmode, "errno"));
 #endif
-      emit_move_insn (errno_rtx, GEN_INT (TARGET_EDOM));
+      emit_move_insn (errno_rtx,
+		      gen_int_mode (TARGET_EDOM, GET_MODE (errno_rtx)));
       emit_label (lab);
       return;
     }
 #endif
 
   /* Make sure the library call isn't expanded as a tail call.  */
   CALL_EXPR_TAILCALL (exp) = 0;
Index: gcc/dwarf2cfi.c
===================================================================
--- gcc/dwarf2cfi.c	2013-09-08 17:18:39.456588227 +0100
+++ gcc/dwarf2cfi.c	2013-09-09 11:06:25.028673760 +0100
@@ -242,15 +242,16 @@ expand_builtin_dwarf_sp_column (void)
    which has mode MODE.  Initialize column C as a return address column.  */
 
 static void
 init_return_column_size (enum machine_mode mode, rtx mem, unsigned int c)
 {
   HOST_WIDE_INT offset = c * GET_MODE_SIZE (mode);
   HOST_WIDE_INT size = GET_MODE_SIZE (Pmode);
-  emit_move_insn (adjust_address (mem, mode, offset), GEN_INT (size));
+  emit_move_insn (adjust_address (mem, mode, offset),
+		  gen_int_mode (size, mode));
 }
 
 /* Generate code to initialize the register size table.  */
 
 void
 expand_builtin_init_dwarf_reg_sizes (tree address)
 {
Index: gcc/except.c
===================================================================
--- gcc/except.c	2013-09-08 17:18:39.456588227 +0100
+++ gcc/except.c	2013-09-09 11:06:25.017673669 +0100
@@ -1152,15 +1152,15 @@ sjlj_mark_call_sites (void)
       before = insn;
       if (CALL_P (insn))
 	before = find_first_parameter_load (insn, NULL_RTX);
 
       start_sequence ();
       mem = adjust_address (crtl->eh.sjlj_fc, TYPE_MODE (integer_type_node),
 			    sjlj_fc_call_site_ofs);
-      emit_move_insn (mem, GEN_INT (this_call_site));
+      emit_move_insn (mem, gen_int_mode (this_call_site, GET_MODE (mem)));
       p = get_insns ();
       end_sequence ();
 
       emit_insn_before (p, before);
       last_call_site = this_call_site;
     }
 }
Index: gcc/expr.c
===================================================================
--- gcc/expr.c	2013-09-09 10:55:59.754537379 +0100
+++ gcc/expr.c	2013-09-09 11:06:25.021673702 +0100
@@ -1067,34 +1067,40 @@ move_by_pieces_1 (insn_gen_fn genfun, ma
 	from1 = adjust_automodify_address (data->from, mode, data->from_addr,
 					   data->offset);
       else
 	from1 = adjust_address (data->from, mode, data->offset);
 
       if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0)
 	emit_insn (gen_add2_insn (data->to_addr,
-				  GEN_INT (-(HOST_WIDE_INT)size)));
+				  gen_int_mode (-(HOST_WIDE_INT) size,
+						GET_MODE (data->to_addr))));
       if (HAVE_PRE_DECREMENT && data->explicit_inc_from < 0)
 	emit_insn (gen_add2_insn (data->from_addr,
-				  GEN_INT (-(HOST_WIDE_INT)size)));
+				  gen_int_mode (-(HOST_WIDE_INT) size,
+						GET_MODE (data->from_addr))));
 
       if (data->to)
 	emit_insn ((*genfun) (to1, from1));
       else
 	{
 #ifdef PUSH_ROUNDING
 	  emit_single_push_insn (mode, from1, NULL);
 #else
 	  gcc_unreachable ();
 #endif
 	}
 
       if (HAVE_POST_INCREMENT && data->explicit_inc_to > 0)
-	emit_insn (gen_add2_insn (data->to_addr, GEN_INT (size)));
+	emit_insn (gen_add2_insn (data->to_addr,
+				  gen_int_mode (size,
+						GET_MODE (data->to_addr))));
       if (HAVE_POST_INCREMENT && data->explicit_inc_from > 0)
-	emit_insn (gen_add2_insn (data->from_addr, GEN_INT (size)));
+	emit_insn (gen_add2_insn (data->from_addr,
+				  gen_int_mode (size,
+						GET_MODE (data->from_addr))));
 
       if (! data->reverse)
 	data->offset += size;
 
       data->len -= size;
     }
 }
@@ -2672,21 +2678,24 @@ store_by_pieces_2 (insn_gen_fn genfun, m
 	to1 = adjust_automodify_address (data->to, mode, data->to_addr,
 					 data->offset);
       else
 	to1 = adjust_address (data->to, mode, data->offset);
 
       if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0)
 	emit_insn (gen_add2_insn (data->to_addr,
-				  GEN_INT (-(HOST_WIDE_INT) size)));
+				  gen_int_mode (-(HOST_WIDE_INT) size,
+						GET_MODE (data->to_addr))));
 
       cst = (*data->constfun) (data->constfundata, data->offset, mode);
       emit_insn ((*genfun) (to1, cst));
 
       if (HAVE_POST_INCREMENT && data->explicit_inc_to > 0)
-	emit_insn (gen_add2_insn (data->to_addr, GEN_INT (size)));
+	emit_insn (gen_add2_insn (data->to_addr,
+				  gen_int_mode (size,
+						GET_MODE (data->to_addr))));
 
       if (! data->reverse)
 	data->offset += size;
 
       data->len -= size;
     }
 }
Index: gcc/lra-constraints.c
===================================================================
--- gcc/lra-constraints.c	2013-09-08 17:18:39.456588227 +0100
+++ gcc/lra-constraints.c	2013-09-09 11:06:25.023673719 +0100
@@ -2833,15 +2833,17 @@ emit_inc (enum reg_class new_rclass, rtx
       emit_insn (gen_move_insn (incloc, result));
       /* Restore non-modified value for the result.  We prefer this
 	 way because it does not require an additional hard
 	 register.  */
       if (plus_p)
 	{
 	  if (CONST_INT_P (inc))
-	    emit_insn (gen_add2_insn (result, GEN_INT (-INTVAL (inc))));
+	    emit_insn (gen_add2_insn (result,
+				      gen_int_mode (-INTVAL (inc),
+						    GET_MODE (result))));
 	  else
 	    emit_insn (gen_sub2_insn (result, inc));
 	}
       else
 	emit_insn (gen_add2_insn (result, inc));
     }
   return result;
Index: gcc/ree.c
===================================================================
--- gcc/ree.c	2013-09-08 17:18:39.456588227 +0100
+++ gcc/ree.c	2013-09-09 11:06:25.023673719 +0100
@@ -294,15 +294,16 @@ combine_set_extension (ext_cand *cand, r
 	new_set = gen_rtx_SET (VOIDmode, new_reg, orig_src);
       else
 	{
 	  /* Zero-extend the negative constant by masking out the bits outside
 	     the source mode.  */
 	  enum machine_mode src_mode = GET_MODE (SET_DEST (*orig_set));
 	  rtx new_const_int
-	    = GEN_INT (INTVAL (orig_src) & GET_MODE_MASK (src_mode));
+	    = gen_int_mode (INTVAL (orig_src) & GET_MODE_MASK (src_mode),
+			    GET_MODE (new_reg));
 	  new_set = gen_rtx_SET (VOIDmode, new_reg, new_const_int);
 	}
     }
   else if (GET_MODE (orig_src) == VOIDmode)
     {
       /* This is mostly due to a call insn that should not be optimized.  */
       return false;
Index: gcc/regmove.c
===================================================================
--- gcc/regmove.c	2013-09-08 17:18:39.456588227 +0100
+++ gcc/regmove.c	2013-09-09 11:06:25.024673727 +0100
@@ -782,15 +782,16 @@ fixup_match_2 (rtx insn, rtx dst, rtx sr
       if (pset && SET_DEST (pset) == dst
 	  && GET_CODE (SET_SRC (pset)) == PLUS
 	  && XEXP (SET_SRC (pset), 0) == src
 	  && CONST_INT_P (XEXP (SET_SRC (pset), 1)))
 	{
 	  HOST_WIDE_INT newconst
 	    = INTVAL (offset) - INTVAL (XEXP (SET_SRC (pset), 1));
-	  rtx add = gen_add3_insn (dst, dst, GEN_INT (newconst));
+	  rtx add = gen_add3_insn (dst, dst,
+				   gen_int_mode (newconst, GET_MODE (dst)));
 
 	  if (add && validate_change (insn, &PATTERN (insn), add, 0))
 	    {
 	      /* Remove the death note for DST from DST_DEATH.  */
 	      if (dst_death)
 		{
 		  remove_death (REGNO (dst), dst_death);
Index: gcc/reload1.c
===================================================================
--- gcc/reload1.c	2013-09-09 10:49:45.231460860 +0100
+++ gcc/reload1.c	2013-09-09 11:06:25.027673752 +0100
@@ -9153,15 +9153,17 @@ inc_for_reload (rtx reloadreg, rtx in, r
 	 We have already copied IN to RELOADREG.  Increment the copy in
 	 RELOADREG, save that back, then decrement RELOADREG so it has
 	 the original value.  */
 
       emit_insn (gen_add2_insn (reloadreg, inc));
       emit_insn (gen_move_insn (incloc, reloadreg));
       if (CONST_INT_P (inc))
-	emit_insn (gen_add2_insn (reloadreg, GEN_INT (-INTVAL (inc))));
+	emit_insn (gen_add2_insn (reloadreg,
+				  gen_int_mode (-INTVAL (inc),
+						GET_MODE (reloadreg))));
       else
 	emit_insn (gen_sub2_insn (reloadreg, inc));
     }
 }
 
 #ifdef AUTO_INC_DEC
 static void


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