From 07edd4c51e5767f09a7a4d141efc6bd15742fd1f Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Wed, 5 Apr 2000 18:36:20 +0000 Subject: optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes from the insn where REG_RETVAL is added. * optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes from the insn where REG_RETVAL is added. (emit_no_conflict_block): Ditto. From-SVN: r32935 --- gcc/ChangeLog | 6 ++++++ gcc/optabs.c | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f2f4df9301c..43c4ef820a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Apr 5 12:35:18 2000 Hans-Peter Nilsson + + * optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes + from the insn where REG_RETVAL is added. + (emit_no_conflict_block): Ditto. + Wed Apr 5 18:03:31 2000 Toshiyasu Morita (toshi.morita@sega.com) J"orn Rennecke diff --git a/gcc/optabs.c b/gcc/optabs.c index 61b1547bb27..dbdea0412ba 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -2699,7 +2699,16 @@ emit_no_conflict_block (insns, target, op0, op1, equiv) set_unique_reg_note (last, REG_EQUAL, equiv); } else - last = get_last_insn (); + { + last = get_last_insn (); + + /* Remove any existing REG_EQUAL note from "last", or else it will + be mistaken for a note referring to the full contents of the + alleged libcall value when found together with the REG_RETVAL + note added below. An existing note can come from an insn + expansion at "last". */ + remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX)); + } if (prev == 0) first = get_insns (); @@ -2810,6 +2819,15 @@ emit_libcall_block (insns, target, result, equiv) if (mov_optab->handlers[(int) GET_MODE (target)].insn_code != CODE_FOR_nothing) set_unique_reg_note (last, REG_EQUAL, copy_rtx (equiv)); + else + { + /* Remove any existing REG_EQUAL note from "last", or else it will + be mistaken for a note referring to the full contents of the + libcall value when found together with the REG_RETVAL note added + below. An existing note can come from an insn expansion at + "last". */ + remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX)); + } if (prev == 0) first = get_insns (); -- cgit v1.2.1