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]

RFA: Don't generate zero_extend:DF ...


-- 
--------------------------
SuperH (UK) Ltd.
2430 Aztec West / Almondsbury / BRISTOL / BS32 4AQ
T:+44 1454 462330
make_compound_operation, called with code SUBREG and x
(subreg:DF (and:DI (reg/v:DI 162)
        (const_int 4294967295 [0xffffffff])) 0)
, returns (zero_extend:DF (subreg:SI (reg/v:DI 162) 0)) .

This causes a compile/combine-hang.c failure for SH5 -m5-32media-nofpu -ml
at -O1 and higher.

We should not make floating point mode zero_extend operations.
I have included a fix.

Wed Sep  4 12:43:02 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* combine.c (make_compound_operation): Don't generate zero / sign
	extensions in floating point modes.

Index: combine.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/combine.c,v
retrieving revision 1.310
diff -p -r1.310 combine.c
*** combine.c	19 Aug 2002 18:18:11 -0000	1.310
--- combine.c	4 Sep 2002 11:42:50 -0000
*************** make_compound_operation (x, in_code)
*** 6629,6635 ****
  	  if (GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (tem))
  	      || (GET_MODE_SIZE (mode) >
  		  GET_MODE_SIZE (GET_MODE (XEXP (tem, 0)))))
! 	    tem = gen_rtx_fmt_e (GET_CODE (tem), mode, XEXP (tem, 0));
  	  else
  	    tem = gen_lowpart_for_combine (mode, XEXP (tem, 0));
  	  return tem;
--- 6629,6639 ----
  	  if (GET_MODE_SIZE (mode) > GET_MODE_SIZE (GET_MODE (tem))
  	      || (GET_MODE_SIZE (mode) >
  		  GET_MODE_SIZE (GET_MODE (XEXP (tem, 0)))))
! 	    {
! 	      if (! INTEGRAL_MODE_P (mode))
! 		break;
! 	      tem = gen_rtx_fmt_e (GET_CODE (tem), mode, XEXP (tem, 0));
! 	    }
  	  else
  	    tem = gen_lowpart_for_combine (mode, XEXP (tem, 0));
  	  return tem;

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