From: Bernd Schmidt Date: Fri, 30 Mar 2001 13:13:16 +0000 (+0000) Subject: Use eliminate_regs when looking for pseudo's equivalent memory location in an insn. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d0caf51394086e45d58238838f708a51e2c36a0f;p=thirdparty%2Fgcc.git Use eliminate_regs when looking for pseudo's equivalent memory location in an insn. From-SVN: r40964 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8639d907cfbe..f899c1c3e9ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,9 @@ * jump.c (delete_barrier_successors): Fix error in last change. + * reload1.c (delete_output_reload): Call eliminate_regs on substed. + (reload_as_needed): Call update_eliminable_offsets a bit later. + 2001-03-28 Bernd Schmidt * flow.c (propagate_block): When trying to delete a case vector, cope diff --git a/gcc/reload1.c b/gcc/reload1.c index e95ff5e7ef55..f8d87517a1b6 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -4278,9 +4278,6 @@ reload_as_needed (live_known) spill_reg_order); } - if (num_eliminable && chain->need_elim) - update_eliminable_offsets (); - if (n_reloads > 0) { rtx next = NEXT_INSN (insn); @@ -4327,6 +4324,10 @@ reload_as_needed (live_known) NOTE_LINE_NUMBER (p) = NOTE_INSN_DELETED; } } + + if (num_eliminable && chain->need_elim) + update_eliminable_offsets (); + /* Any previously reloaded spilled pseudo reg, stored in this insn, is no longer validly lying around to save a future reload. Note that this does not detect pseudos that were reloaded @@ -8071,7 +8072,9 @@ delete_output_reload (insn, j, last_reload_reg) } n_occurrences = count_occurrences (PATTERN (insn), reg); if (substed) - n_occurrences += count_occurrences (PATTERN (insn), substed); + n_occurrences += count_occurrences (PATTERN (insn), + eliminate_regs (substed, 0, + NULL_RTX)); if (n_occurrences > n_inherited) return;