http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49007
--- Comment #18 from John David Anglin <danglin at gcc dot gnu.org> 2011-05-23
16:57:02 UTC ---
So, the problem is here:
/* Figure out where to emit the special USE insn so we don't
later incorrectly compute register live/death info. */
rtx tmp = next_active_insn (trial);
if (tmp == 0)
tmp = find_end_label ();
if (tmp)
{
/* 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);
next = insn;
continue;
}
This code fails to handle the case where there already is a use.