Commit eed04dff by Jeff Law

reorg.c (relax_delay_slots): Call update_block before redirecting a branch past a redundant insn.

	* reorg.c (relax_delay_slots): Call update_block before
	redirecting a branch past a redundant insn.

From-SVN: r12060
parent da3c5e3c
...@@ -4066,11 +4066,20 @@ relax_delay_slots (first) ...@@ -4066,11 +4066,20 @@ relax_delay_slots (first)
if (trial && GET_CODE (PATTERN (trial)) != SEQUENCE if (trial && GET_CODE (PATTERN (trial)) != SEQUENCE
&& redundant_insn (trial, insn, 0)) && redundant_insn (trial, insn, 0))
{ {
trial = next_active_insn (trial); rtx tmp;
if (trial == 0)
target_label = find_end_label (); /* Figure out where to emit the special USE insn so we don't
else later incorrectly compute register live/death info. */
target_label = get_label_before (trial); tmp = next_active_insn (trial);
if (tmp == 0)
tmp = find_end_label ();
/* Insert the special USE insn and update dataflow info. */
update_block (trial, tmp);
/* Now emit a label before the special USE insn, and
redirect our jump to the new label. */
target_label = get_label_before (PREV_INSN (tmp));
reorg_redirect_jump (delay_insn, target_label); reorg_redirect_jump (delay_insn, target_label);
next = insn; next = insn;
continue; continue;
......
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