Commit 3040ffd6 by Jan Hubicka Committed by Jan Hubicka

reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of dead registers.

	* reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of
	dead registers.

	* i386.c (movsf splitter): Fix typo in my last checkin.

From-SVN: r31256
parent 4cf962a2
Thu Jan 6 13:44:59 CET 2000 Jan Hubicka <jh@suse.cz>
* reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of
dead registers.
* i386.c (movsf splitter): Fix typo in my last checkin.
2000-01-05 Nick Clifton <nickc@cygnus.com> 2000-01-05 Nick Clifton <nickc@cygnus.com>
* varasm.c (IN_NAMED_SECTION): Allow targets to provide their * varasm.c (IN_NAMED_SECTION): Allow targets to provide their
......
...@@ -1788,7 +1788,7 @@ ...@@ -1788,7 +1788,7 @@
[(set_attr "type" "fmov,fmov,fmov,imov,imov")]) [(set_attr "type" "fmov,fmov,fmov,imov,imov")])
(define_split (define_split
[(set (match_operand:SF 0 "general_operand" "") [(set (match_operand:SF 0 "nonimmediate_operand" "")
(match_operand:SF 1 "memory_operand" ""))] (match_operand:SF 1 "memory_operand" ""))]
"reload_completed "reload_completed
&& GET_CODE (operands[1]) == MEM && GET_CODE (operands[1]) == MEM
......
...@@ -1383,12 +1383,24 @@ subst_stack_regs_pat (insn, regstack, pat) ...@@ -1383,12 +1383,24 @@ subst_stack_regs_pat (insn, regstack, pat)
if (STACK_REG_P (*src) if (STACK_REG_P (*src)
&& find_regno_note (insn, REG_DEAD, REGNO (*src))) && find_regno_note (insn, REG_DEAD, REGNO (*src)))
{ {
emit_pop_insn (insn, regstack, *src, EMIT_AFTER); /* In stupid allocation the USE might be used to extend lifetime
of variable to given scope. This may end up as USE of dead
register. */
if (optimize || get_hard_regnum (regstack, *src) != -1)
emit_pop_insn (insn, regstack, *src, EMIT_AFTER);
return; return;
} }
/* ??? Uninitialized USE should not happen. */
else if (get_hard_regnum (regstack, *src) == -1) else if (get_hard_regnum (regstack, *src) == -1)
abort(); {
if (optimize)
abort();
if (GET_CODE (PATTERN (insn)) != USE)
abort();
PATTERN (insn) = gen_rtx_SET (GET_MODE (*src), *src,
CONST0_RTX (GET_MODE (*src)));
subst_stack_regs_pat (insn, regstack, PATTERN (insn));
return;
}
break; break;
case CLOBBER: case CLOBBER:
......
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