Commit c762163e by J"orn Rennecke Committed by Joern Rennecke

flow.c (verify_local_live_at_start): Back out last change.

	* flow.c (verify_local_live_at_start): Back out last change.
	* combine.c (distribute_notes): When parts of a hard reg are
	neither set nor referenced in PLACE, search backwards for a
	place to put a REG_UNUSED note; if none found, ask for flow
	info refresh.

From-SVN: r37284
parent aa17a5f3
Tue Nov 7 06:24:02 2000 J"orn Rennecke <amylaar@redhat.com>
* flow.c (verify_local_live_at_start): Back out last change.
* combine.c (distribute_notes): When parts of a hard reg are
neither set nor referenced in PLACE, search backwards for a
place to put a REG_UNUSED note; if none found, ask for flow
info refresh.
Mon Nov 6 20:08:13 2000 J"orn Rennecke <amylaar@redhat.com> Mon Nov 6 20:08:13 2000 J"orn Rennecke <amylaar@redhat.com>
* reload1.c (eliminate_regs_in_insn): Allow a set to be a PARALLEL * reload1.c (eliminate_regs_in_insn): Allow a set to be a PARALLEL
......
...@@ -12499,6 +12499,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1) ...@@ -12499,6 +12499,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
i += HARD_REGNO_NREGS (i, reg_raw_mode[i])) i += HARD_REGNO_NREGS (i, reg_raw_mode[i]))
{ {
rtx piece = gen_rtx_REG (reg_raw_mode[i], i); rtx piece = gen_rtx_REG (reg_raw_mode[i], i);
basic_block bb = BASIC_BLOCK (this_basic_block);
if (! dead_or_set_p (place, piece) if (! dead_or_set_p (place, piece)
&& ! reg_bitfield_target_p (piece, && ! reg_bitfield_target_p (piece,
...@@ -12510,6 +12511,34 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1) ...@@ -12510,6 +12511,34 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
distribute_notes (new_note, place, place, distribute_notes (new_note, place, place,
NULL_RTX, NULL_RTX, NULL_RTX); NULL_RTX, NULL_RTX, NULL_RTX);
} }
else if (! refers_to_regno_p (i, i + 1,
PATTERN (place), 0)
&& ! find_regno_fusage (place, USE, i))
for (tem = PREV_INSN (place); ;
tem = PREV_INSN (tem))
{
if (! INSN_P (tem))
{
if (tem == bb->head)
{
SET_BIT (refresh_blocks,
this_basic_block);
need_refresh = 1;
break;
}
continue;
}
if (dead_or_set_p (tem, piece)
|| reg_bitfield_target_p (piece,
PATTERN (tem)))
{
REG_NOTES (tem)
= gen_rtx_EXPR_LIST (REG_DEAD, piece,
REG_NOTES (tem));
break;
}
}
} }
place = 0; place = 0;
......
...@@ -2888,24 +2888,11 @@ verify_local_live_at_start (new_live_at_start, bb) ...@@ -2888,24 +2888,11 @@ verify_local_live_at_start (new_live_at_start, bb)
EXECUTE_IF_SET_IN_REG_SET (new_live_at_start, 0, i, EXECUTE_IF_SET_IN_REG_SET (new_live_at_start, 0, i,
{ {
/* No pseudo registers should die. */ /* No registers should die. */
if (REGNO_REG_SET_P (bb->global_live_at_start, i)) if (REGNO_REG_SET_P (bb->global_live_at_start, i))
{ abort ();
/* But hard regs can reasonably die, e.g. when we combine /* Verify that the now-live register is wider than word_mode. */
(insn 6 30 7 (set (reg/v:DI 83) verify_wide_reg (i, bb->head, bb->end);
(reg:DI 5 r5)) (nil)
(expr_list:REG_DEAD (reg:DI 5 r5) (nil)))
... and ...
(insn 17 15 18 (set (reg:SI 5 r5)
(subreg:SI (reg/v:DI 83) 1)) (insn_list 6 (nil))
(expr_list:REG_DEAD (reg/v:DI 83) (nil))) . */
if (i >= FIRST_PSEUDO_REGISTER)
abort ();
}
else
/* Verify that the now-live register is wider than word_mode. */
verify_wide_reg (i, bb->head, bb->end);
}); });
} }
} }
......
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