Commit 83a6ac60 by Vladimir Makarov Committed by Vladimir Makarov

re PR target/39856 (ICE in subst_stack_regs_pat, at reg-stack.c:1386)

2009-05-22 Vladimir Makarov <vmakarov@redhat.com>

	PR target/39856
	* reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
	for clobber.

From-SVN: r147804
parent 84c40c4a
2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
PR target/39856
* reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
for clobber.
2009-05-22 Mark Mitchell <mark@codesourcery.com>
* tree.c (handle_dll_attribute): Mark dllexport'd inlines as
......
......@@ -1371,21 +1371,23 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
if (pat != PATTERN (insn))
{
/* The fix_truncdi_1 pattern wants to be able to allocate
its own scratch register. It does this by clobbering
an fp reg so that it is assured of an empty reg-stack
register. If the register is live, kill it now.
Remove the DEAD/UNUSED note so we don't try to kill it
later too. */
/* The fix_truncdi_1 pattern wants to be able to
allocate its own scratch register. It does this by
clobbering an fp reg so that it is assured of an
empty reg-stack register. If the register is live,
kill it now. Remove the DEAD/UNUSED note so we
don't try to kill it later too.
In reality the UNUSED note can be absent in some
complicated cases when the register is reused for
partially set variable. */
if (note)
emit_pop_insn (insn, regstack, *dest, EMIT_BEFORE);
else
{
note = find_reg_note (insn, REG_UNUSED, *dest);
gcc_assert (note);
}
remove_note (insn, note);
note = find_reg_note (insn, REG_UNUSED, *dest);
if (note)
remove_note (insn, note);
replace_reg (dest, FIRST_STACK_REG + 1);
}
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