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]

More internal arg pointer stuff





I missed another case where we could delete a reference to the internal
argument pointer before purging ADDRESSOF expresions.

	* cse.c (delete_trivially_dead_insns): Do not delete stores to
	the internal_arg_pointer.

Index: cse.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/cse.c,v
retrieving revision 1.174
diff -c -3 -p -r1.174 cse.c
*** cse.c	1999/08/29 01:38:31	1.174
--- cse.c	1999/08/31 22:45:09
*************** delete_trivially_dead_insns (insns, nreg
*** 9177,9183 ****
  	  else if (GET_CODE (SET_DEST (PATTERN (insn))) != REG
  		   || REGNO (SET_DEST (PATTERN (insn))) < FIRST_PSEUDO_REGISTER
  		   || counts[REGNO (SET_DEST (PATTERN (insn)))] != 0
! 		   || side_effects_p (SET_SRC (PATTERN (insn))))
  	    live_insn = 1;
  	}
        else if (GET_CODE (PATTERN (insn)) == PARALLEL)
--- 9177,9189 ----
  	  else if (GET_CODE (SET_DEST (PATTERN (insn))) != REG
  		   || REGNO (SET_DEST (PATTERN (insn))) < FIRST_PSEUDO_REGISTER
  		   || counts[REGNO (SET_DEST (PATTERN (insn)))] != 0
! 		   || side_effects_p (SET_SRC (PATTERN (insn)))
! 		   /* An ADDRESSOF expression can turn into a use of the
! 		      internal arg pointer, so always consider the
! 		      internal arg pointer live.  If it is truly dead,
! 		      flow will delete the initializing insn.  */
! 		   || (SET_DEST (PATTERN (insn))
! 		       == current_function_internal_arg_pointer))
  	    live_insn = 1;
  	}
        else if (GET_CODE (PATTERN (insn)) == PARALLEL)





--QAA20269.936139264/upchuck.cygnus.com--




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