summaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-24 18:58:32 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-24 18:58:32 +0000
commitc95cfc31b915c73a4aade079bc7c18c4f0b56a87 (patch)
tree37a4177603dd6348baef3608f1252a05e0b49c71 /gcc/reg-stack.c
parent8c5dc77f3f4e9ed7b0a770874e739297047b6d6b (diff)
downloadgcc-c95cfc31b915c73a4aade079bc7c18c4f0b56a87.tar.gz
* reg-stack.c (subst_stack_regs_pat): Handle correctly USEs of
dead registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31588 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 45ef11c5ce3..2edd57906cd 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -1383,24 +1383,12 @@ subst_stack_regs_pat (insn, regstack, pat)
if (STACK_REG_P (*src)
&& find_regno_note (insn, REG_DEAD, REGNO (*src)))
{
- /* 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);
+ emit_pop_insn (insn, regstack, *src, EMIT_AFTER);
return;
}
+ /* ??? Uninitialized USE should not happen. */
else if (get_hard_regnum (regstack, *src) == -1)
- {
- 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;
- }
+ abort();
break;
case CLOBBER: