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]

[3.4 Committed] PR18371: Backport from mainline


Another simple backport allows us to close this regression PR.

The following patch has been bootstrapped on i686-pc-linux-gnu against
the gcc-3_4-branch will a full "make bootstrap", all default languages,
and regression tested with a top-level "make -k check" with no new
failures.

Committed to the gcc-3_4-branch.



2005-03-16  Roger Sayle  <roger@eyesopen.com>

	PR target/18371
	Backport from mainline
	2004-12-19  Steven Bosscher  <stevenb@suse.de>
	* config/i386/i386.c (ix86_split_to_parts): Use an array with
	four elements for decoding a CONST_DOUBLE on 64 bits targets.


Index: config/i386/i386.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.c,v
retrieving revision 1.635.2.19
diff -c -3 -p -r1.635.2.19 i386.c
*** config/i386/i386.c	23 Dec 2004 01:31:17 -0000	1.635.2.19
--- config/i386/i386.c	16 Mar 2005 03:32:36 -0000
*************** ix86_split_to_parts (rtx operand, rtx *p
*** 10646,10655 ****
  	  else if (GET_CODE (operand) == CONST_DOUBLE)
  	    {
  	      REAL_VALUE_TYPE r;
! 	      long l[3];

  	      REAL_VALUE_FROM_CONST_DOUBLE (r, operand);
  	      real_to_target (l, &r, mode);
  	      /* Do not use shift by 32 to avoid warning on 32bit systems.  */
  	      if (HOST_BITS_PER_WIDE_INT >= 64)
  	        parts[0]
--- 10646,10656 ----
  	  else if (GET_CODE (operand) == CONST_DOUBLE)
  	    {
  	      REAL_VALUE_TYPE r;
! 	      long l[4];

  	      REAL_VALUE_FROM_CONST_DOUBLE (r, operand);
  	      real_to_target (l, &r, mode);
+
  	      /* Do not use shift by 32 to avoid warning on 32bit systems.  */
  	      if (HOST_BITS_PER_WIDE_INT >= 64)
  	        parts[0]
*************** ix86_split_to_parts (rtx operand, rtx *p
*** 10659,10664 ****
--- 10660,10666 ----
  		       DImode);
  	      else
  	        parts[0] = immed_double_const (l[0], l[1], DImode);
+
  	      if (upper_mode == SImode)
  	        parts[1] = gen_int_mode (l[2], SImode);
  	      else if (HOST_BITS_PER_WIDE_INT >= 64)

Roger
--


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