diff options
author | Steven Bosscher <steven@gcc.gnu.org> | 2007-02-11 19:53:11 +0000 |
---|---|---|
committer | Steven Bosscher <steven@gcc.gnu.org> | 2007-02-11 19:53:11 +0000 |
commit | a31830a7cab48698868c117ba9100ec31069a91b (patch) | |
tree | b8e43a1106916133f6889b90922be4c1b0c3b737 /gcc/calls.c | |
parent | 4c38b6d9425a007d8e27511703f9660c48962e6e (diff) | |
download | gcc-a31830a7cab48698868c117ba9100ec31069a91b.zip gcc-a31830a7cab48698868c117ba9100ec31069a91b.tar.gz gcc-a31830a7cab48698868c117ba9100ec31069a91b.tar.bz2 |
fwprop.c (try_fwprop_subst): Use set_unique_reg_note to add the REG_EQ* note.
* fwprop.c (try_fwprop_subst): Use set_unique_reg_note
to add the REG_EQ* note.
* see.c (see_merge_one_use_extension): Likewise.
* local-alloc.c (update_equiv_regs): Likewise. Also don't
turn REG_EQUAL notes into REG_EQUIV notes if the target
register may have more than one set.
* function.c (assign_parm_setup_reg): Use set_unique_reg_note.
* gcse.c (try_replace_reg): Likewise.
* alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
* calls.c (fixup_tail_calls): Likewise. Abort if there is
more than one REG_EQUIV note.
* reload1.c (gen_reload): Use set_unique_reg_note.
From-SVN: r121821
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index ab51d17..53e4d3f 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -3130,24 +3130,19 @@ fixup_tail_calls (void) for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) { + rtx note; + /* There are never REG_EQUIV notes for the incoming arguments after the NOTE_INSN_FUNCTION_BEG note, so stop if we see it. */ if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG) break; - while (1) - { - rtx note = find_reg_note (insn, REG_EQUIV, 0); - if (note) - { - /* Remove the note and keep looking at the notes for - this insn. */ - remove_note (insn, note); - continue; - } - break; - } + note = find_reg_note (insn, REG_EQUIV, 0); + if (note) + remove_note (insn, note); + note = find_reg_note (insn, REG_EQUIV, 0); + gcc_assert (!note); } } |