aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorSteven Bosscher <steven@gcc.gnu.org>2007-02-11 19:53:11 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2007-02-11 19:53:11 +0000
commita31830a7cab48698868c117ba9100ec31069a91b (patch)
treeb8e43a1106916133f6889b90922be4c1b0c3b737 /gcc/calls.c
parent4c38b6d9425a007d8e27511703f9660c48962e6e (diff)
downloadgcc-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.c19
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);
}
}