diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-08-31 22:48:58 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-08-31 16:48:58 -0600 |
commit | 61c48fbf260c7b77da7905c7de56b52c255d4da8 (patch) | |
tree | 5939ebfd2ec6fdb99ee8a5d2b7da426f50b58c8a /gcc/cse.c | |
parent | ede7cd44999a94c3eeb6708db37d6939045b554e (diff) | |
download | gcc-61c48fbf260c7b77da7905c7de56b52c255d4da8.zip gcc-61c48fbf260c7b77da7905c7de56b52c255d4da8.tar.gz gcc-61c48fbf260c7b77da7905c7de56b52c255d4da8.tar.bz2 |
cse.c (delete_trivially_dead_insns): Do not delete stores to the internal_arg_pointer.
* cse.c (delete_trivially_dead_insns): Do not delete stores to
the internal_arg_pointer.
From-SVN: r29017
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -9191,7 +9191,13 @@ delete_trivially_dead_insns (insns, nreg) 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)))) + || 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) |