summaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-29 01:42:28 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-29 01:42:28 +0000
commit15cec1c308576e361b23dc23aeab88a786489785 (patch)
tree730b2ae81ede9937fb2ae1cc954b91b39fe04a0a /gcc/jump.c
parentece7bde769012c887fd98cd4d54f4919b07f6733 (diff)
downloadgcc-15cec1c308576e361b23dc23aeab88a786489785.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28957 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jump.c')
-rw-r--r--gcc/jump.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index 7a4caaae13c..c5e27801bf2 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -290,7 +290,12 @@ jump_optimize_1 (f, cross_jump, noop_moves, after_regscan, mark_labels_only)
might arrange to use that reg for real. */
&& REGNO_LAST_NOTE_UID (REGNO (SET_DEST (set))) == INSN_UID (insn)
&& ! side_effects_p (SET_SRC (set))
- && ! find_reg_note (insn, REG_RETVAL, 0))
+ && ! find_reg_note (insn, REG_RETVAL, 0)
+ /* An ADDRESSOF expression can turn into a use of the internal arg
+ pointer, so do not delete the initialization of the internal
+ arg pointer yet. If it is truly dead, flow will delete the
+ initializing insn. */
+ && SET_DEST (set) != current_function_internal_arg_pointer)
delete_insn (insn);
}