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]

Re: [wide-int] Postreload LOAD_EXTEND_OP handling


On 11/09/2013 05:58 AM, Richard Sandiford wrote:
LOAD_EXTEND_OP is about extending a subword value to a word.  The final
wide_int should therefore be word_mode rather than GET_MODE (src).

Tested on powerpc64-linux-gnu and by rerunning the assembly comparison.
OK to install?

Thanks,
Richard


Index: gcc/postreload.c
===================================================================
--- gcc/postreload.c	2013-11-09 09:39:16.947734730 +0000
+++ gcc/postreload.c	2013-11-09 09:39:29.721821066 +0000
@@ -303,21 +303,19 @@ reload_cse_simplify_set (rtx set, rtx in
  	      switch (extend_op)
  		{
  		case ZERO_EXTEND:
-		  result = wide_int (std::make_pair (this_rtx, GET_MODE (src)));
-		  if (GET_MODE_PRECISION (GET_MODE (src))
-		      > GET_MODE_PRECISION (word_mode))
-		    result = wi::zext (result, GET_MODE_PRECISION (word_mode));
+		  result = wide_int::from (std::make_pair (this_rtx,
+							   GET_MODE (src)),
+					   BITS_PER_WORD, UNSIGNED);
  		  break;
  		case SIGN_EXTEND:
-		  result = wide_int (std::make_pair (this_rtx, GET_MODE (src)));
-		  if (GET_MODE_PRECISION (GET_MODE (src))
-		      > GET_MODE_PRECISION (word_mode))
-		    result = wi::sext (result, GET_MODE_PRECISION (word_mode));
+		  result = wide_int::from (std::make_pair (this_rtx,
+							   GET_MODE (src)),
+					   BITS_PER_WORD, SIGNED);
  		  break;
  		default:
  		  gcc_unreachable ();
  		}
-	      this_rtx = immed_wide_int_const (result, GET_MODE (src));
+	      this_rtx = immed_wide_int_const (result, word_mode);
  	    }
  #endif
  	  this_cost = set_src_cost (this_rtx, speed);
This is really your domain.  i cannot comment on this.


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