This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
More internal arg pointer stuff
- To: gcc-patches@gcc.gnu.org
- Subject: More internal arg pointer stuff
- From: Jeffrey A Law <law@cygnus.com>
- Date: Tue, 31 Aug 1999 16:42:10 -0600
- Reply-To: law@cygnus.com
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--