Commit e5d7a520 by Richard Sandiford Committed by Richard Sandiford

re PR middle-end/27736 (unwind-dw2-fde.c:833: fatal error: internal consistency failure)

	PR rtl-optimization/27736
	* combine.c (replaced_rhs_value): New variable.
	(combine_instructions): Set it.
	(distribute_notes): When distributing a note in replaced_rhs_insn,
	check whether the value was used in replaced_rhs_value.

From-SVN: r114019
parent f004ab02
2006-05-23 Richard Sandiford <richard@codesourcery.com>
PR rtl-optimization/27736
* combine.c (replaced_rhs_value): New variable.
(combine_instructions): Set it.
(distribute_notes): When distributing a note in replaced_rhs_insn,
check whether the value was used in replaced_rhs_value.
2006-05-23 Andrew MacLeod <amacleod@redhat.com>
PR c++/26757
......
......@@ -128,6 +128,11 @@ static int total_attempts, total_merges, total_extras, total_successes;
so modified, or null if none. */
static rtx replaced_rhs_insn;
/* When REPLACED_RHS_INSN is nonnull, this is a copy of the new right
hand side. */
static rtx replaced_rhs_value;
/* Vector mapping INSN_UIDs to cuids.
The cuids are like uids but increase monotonically always.
......@@ -928,6 +933,7 @@ combine_instructions (rtx f, unsigned int nregs)
rtx orig = SET_SRC (set);
SET_SRC (set) = note;
replaced_rhs_insn = temp;
replaced_rhs_value = copy_rtx (note);
next = try_combine (insn, temp, NULL_RTX,
&new_direct_jump_p);
replaced_rhs_insn = NULL;
......@@ -12122,7 +12128,9 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
In both cases, we must search to see if we can find a previous
use of A and put the death note there. */
if (from_insn && from_insn == replaced_rhs_insn)
if (from_insn
&& from_insn == replaced_rhs_insn
&& !reg_overlap_mentioned_p (XEXP (note, 0), replaced_rhs_value))
tem = from_insn;
else
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment