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]

Re: Autoincrement patches


> Joern Rennecke writes:
>  > Hmm, I forgot six stars and two ands...
> 
> I'm still getting a segfault at line 630 since match = 0xd.

Oops, that last fix was not quite right.  Please try this one on top.

*** regmove.c-199912172143	Fri Dec 17 21:40:26 1999
--- regmove.c	Sat Dec 18 04:34:23 1999
*************** lookup_pre_modify (regno, class, offset,
*** 624,632 ****
    struct rel_use *match;
  
    PUT_CODE (test_addr, PRE_MODIFY);
!   for (; *match_first < match_limit; match_first++)
      {
!       for (match = match_first; match; match = match->next_hash)
  	{
  	  if (match->next_chain)
  	    continue;
--- 624,632 ----
    struct rel_use *match;
  
    PUT_CODE (test_addr, PRE_MODIFY);
!   for (; match_first < match_limit; match_first++)
      {
!       for (match = *match_first; match; match = match->next_hash)
  	{
  	  if (match->next_chain)
  	    continue;
*************** optimize_related_values_1 (rel_base, lui
*** 1910,1916 ****
  		  if ((! use->next_chain || use->next_chain->insn != use->insn)
  		      && ! apply_change_group ())
  		    abort ();
! 		  if (addr != reg)
  		    REG_NOTES (use->insn)
  		      = gen_rtx_EXPR_LIST (REG_INC, reg, REG_NOTES (use->insn));
  		  last_use = use;
--- 1910,1916 ----
  		  if ((! use->next_chain || use->next_chain->insn != use->insn)
  		      && ! apply_change_group ())
  		    abort ();
! 		  if (addr != reg && GET_CODE (addr) != PLUS)
  		    REG_NOTES (use->insn)
  		      = gen_rtx_EXPR_LIST (REG_INC, reg, REG_NOTES (use->insn));
  		  last_use = use;
*************** regmove_optimize (f, nregs, regmove_dump
*** 2995,3001 ****
  	      else if (GET_CODE (src) == SUBREG
  		       && (GET_MODE_SIZE (GET_MODE (src))
  			   >= GET_MODE_SIZE (GET_MODE (SUBREG_REG (src)))))
! 		src = SUBREG_REG (src);
  
  	      if (GET_CODE (src) != REG
  		  || GET_CODE (dst) != REG
--- 2995,3006 ----
  	      else if (GET_CODE (src) == SUBREG
  		       && (GET_MODE_SIZE (GET_MODE (src))
  			   >= GET_MODE_SIZE (GET_MODE (SUBREG_REG (src)))))
! 		{
! 		  src = SUBREG_REG (src);
! 		  /* Unshare the SUBREG.  */
! 		  src_subreg = gen_rtx_SUBREG (GET_MODE (src_subreg), src,
! 					       SUBREG_WORD (src_subreg));
! 		}
  
  	      if (GET_CODE (src) != REG
  		  || GET_CODE (dst) != REG


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