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]

obvious split_long_move x86_64 fix



Hi,
I've installed as obvious.  The change_address don't work on push operands - this
is just copy of equivalent code in split_to_parts.
It didn't get caught earlier, since we had 16 FP passing registers that was apparently
enought for absolutely everything.

Honza

Thu Apr  5 13:48:49 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_long_move): Use PUT_MODE instead of change_address.

Index: i386.c
===================================================================
RCS file: /home/cvs/Repository/gcc/gcc/config/i386/i386.c,v
retrieving revision 1.53
diff -c -3 -p -r1.53 i386.c
*** i386.c	2001/04/04 11:57:08	1.53
--- i386.c	2001/04/05 11:47:05
*************** ix86_split_long_move (operands)
*** 7980,7986 ****
  	  && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0)))
  	operands[1] = get_pool_constant (XEXP (operands[1], 0));
        if (push_operand (operands[0], VOIDmode))
! 	operands[0] = change_address (operands[0], DImode, XEXP (operands[0], 0));
        else
          operands[0] = gen_lowpart (DImode, operands[0]);
        operands[1] = gen_lowpart (DImode, operands[1]);
--- 7978,7987 ----
  	  && CONSTANT_POOL_ADDRESS_P (XEXP (operands[1], 0)))
  	operands[1] = get_pool_constant (XEXP (operands[1], 0));
        if (push_operand (operands[0], VOIDmode))
! 	{
! 	  operands[0] = copy_rtx (operands[0]);
! 	  PUT_MODE (operands[0], Pmode);
! 	}
        else
          operands[0] = gen_lowpart (DImode, operands[0]);
        operands[1] = gen_lowpart (DImode, operands[1]);


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