diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-08-29 01:42:28 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-08-28 19:42:28 -0600 |
commit | af37f0dda914774e24ff384719f136795f76f2f4 (patch) | |
tree | 730b2ae81ede9937fb2ae1cc954b91b39fe04a0a /gcc/cse.c | |
parent | 27778b739c3893b3aa6295e21c698aad2f7b5934 (diff) | |
download | gcc-af37f0dda914774e24ff384719f136795f76f2f4.zip gcc-af37f0dda914774e24ff384719f136795f76f2f4.tar.gz gcc-af37f0dda914774e24ff384719f136795f76f2f4.tar.bz2 |
jump.c (jump_optimize_1): Do not delete assignments to internal_arg_pointer.
* jump.c (jump_optimize_1): Do not delete assignments to
internal_arg_pointer.
* cse.c (delete_trivially_dead_insns): Always consider a set of
the internal_arg_pointer live.
From-SVN: r28957
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -9215,7 +9215,13 @@ delete_trivially_dead_insns (insns, nreg) else if (GET_CODE (SET_DEST (elt)) != REG || REGNO (SET_DEST (elt)) < FIRST_PSEUDO_REGISTER || counts[REGNO (SET_DEST (elt))] != 0 - || side_effects_p (SET_SRC (elt))) + || side_effects_p (SET_SRC (elt)) + /* 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 (elt) + == current_function_internal_arg_pointer)) live_insn = 1; } else if (GET_CODE (elt) != CLOBBER && GET_CODE (elt) != USE) |