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]

Fix minor bug in alpha.c:expand_block_move


This fixes a bug which only shows up for a large Ada test case.
Tested on alphaev56-dec-osf4.0f.

2003-10-10  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (alpha_expand_block_mode): Don't use
	gen_lowpart and company except for REG.

*** config/alpha/alpha.c	6 Oct 2003 22:47:19 -0000	1.330
--- config/alpha/alpha.c	9 Oct 2003 21:10:44 -0000
*************** alpha_expand_block_move (rtx operands[])
*** 4453,4457 ****
  	 handles the exact size.  */
        mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 1);
!       if (mode != BLKmode
  	  && GET_MODE_SIZE (GET_MODE (tmp)) >= bytes)
  	{
--- 4453,4458 ----
  	 handles the exact size.  */
        mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 1);
!       if (GET_CODE (tmp) == REG
! 	  && mode != BLKmode
  	  && GET_MODE_SIZE (GET_MODE (tmp)) >= bytes)
  	{
*************** alpha_expand_block_move (rtx operands[])
*** 4573,4577 ****
  
        mode = mode_for_size (orig_bytes * BITS_PER_UNIT, MODE_INT, 1);
!       if (GET_MODE (tmp) == mode)
  	{
  	  if (nregs == 1)
--- 4574,4578 ----
  
        mode = mode_for_size (orig_bytes * BITS_PER_UNIT, MODE_INT, 1);
!       if (GET_CODE (tmp) == REG && GET_MODE (tmp) == mode)
  	{
  	  if (nregs == 1)


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