From 61c48fbf260c7b77da7905c7de56b52c255d4da8 Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Tue, 31 Aug 1999 22:48:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/cse.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5fa34ce5ce..f8a09810fab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 31 16:44:52 1999 Jeffrey A Law (law@cygnus.com) + + * cse.c (delete_trivially_dead_insns): Do not delete stores to + the internal_arg_pointer. + Tue Aug 31 13:35:42 1999 Richard Henderson Merge peephole2 from new_ia32_branch: diff --git a/gcc/cse.c b/gcc/cse.c index 6c7aef31ecd..68fe7b04a92 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -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) -- 2.30.2