I guess the best solution is to change the place you modified, but to use a test that checks for autoinc codes. I'll come up with something.

Try this.


Bernd
	* reload.c (find_reloads): Only set INC field if we know we have an
	autoinc reload.
	* reload.h (struct reload): Update comment to match.

Index: reload.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/reload.c,v
retrieving revision 1.268.6.2
diff -c -p -r1.268.6.2 reload.c
*** reload.c	7 Apr 2005 11:21:35 -0000	1.268.6.2
--- reload.c	11 Apr 2005 12:33:13 -0000
*************** find_reloads (struct insn_chain *chain, 
*** 3203,3216 ****
  		 && goal_alternative_offmemok[i]
  		 && MEM_P (recog_data.operand[i]))
  	  {
  	    operand_reloadnum[i]
  	      = push_reload (XEXP (recog_data.operand[i], 0), NULL_RTX,
  			     &XEXP (recog_data.operand[i], 0), (rtx*) 0,
  			     MODE_BASE_REG_CLASS (VOIDmode),
  			     GET_MODE (XEXP (recog_data.operand[i], 0)),
  			     VOIDmode, 0, 0, i, RELOAD_FOR_NONE);
! 	    rld[operand_reloadnum[i]].inc
! 	      = GET_MODE_SIZE (GET_MODE (recog_data.operand[i]));
  	  }
  	else if (goal_alternative_matched[i] == -1)
  	  {
--- 3203,3221 ----
  		 && goal_alternative_offmemok[i]
  		 && MEM_P (recog_data.operand[i]))
  	  {
+ 	    struct reload *rl;
  	    operand_reloadnum[i]
  	      = push_reload (XEXP (recog_data.operand[i], 0), NULL_RTX,
  			     &XEXP (recog_data.operand[i], 0), (rtx*) 0,
  			     MODE_BASE_REG_CLASS (VOIDmode),
  			     GET_MODE (XEXP (recog_data.operand[i], 0)),
  			     VOIDmode, 0, 0, i, RELOAD_FOR_NONE);
! 	    rl = rld + operand_reloadnum[i];
! 	    if (GET_CODE (rl->in_reg) == PRE_INC
! 		|| GET_CODE (rl->in_reg) == PRE_DEC
! 		|| GET_CODE (rl->in_reg) == POST_INC
! 		|| GET_CODE (rl->in_reg) == POST_DEC)
! 	      rl->inc = GET_MODE_SIZE (GET_MODE (recog_data.operand[i]));
  	  }
  	else if (goal_alternative_matched[i] == -1)
  	  {

Reply via email to