summaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-06 13:57:15 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-02-06 13:57:15 +0000
commitf2a3e89e5736133b154fa48e0d46c957be4fbe13 (patch)
treed2c09d295981dd120be3b0f716e287f0fc34cd6e /gcc/reg-stack.c
parent287ecb3eab399e579158e4cbd037261f67ffbc1b (diff)
downloadgcc-f2a3e89e5736133b154fa48e0d46c957be4fbe13.tar.gz
* recog.c (split_all_insns): Do not update reg info.
* regrename.c (regrename_optimize): Likewise. * toplev.c (rest_of_handle_reorder_blocks): Likewise. * flow.c (struct propagate_block_info): Add insn_num field. (reg_deaths): New array. (life_analysis): Free reg_deaths info. (allocate_reg_life_data): Allocate reg_deaths array. (propagate_one_insn): Use new array. (init_propagate_block): Initialize it. (free_propagate_block_info): Finish compuation of REG_LIVE_LENGTH (attempt_auto_inc): Sanity check that REG_INFO is not computed at same time. (mark_used_regs): Update new array. * reg-stack.c (subst_stack_regs): Unshare clobbers before substitution. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77396 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 433b7393ab6..90e137df56a 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -2236,9 +2236,14 @@ subst_stack_regs (rtx insn, stack regstack)
for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++)
{
if (stack_regs_mentioned_p (XVECEXP (PATTERN (insn), 0, i)))
- control_flow_insn_deleted
- |= subst_stack_regs_pat (insn, regstack,
- XVECEXP (PATTERN (insn), 0, i));
+ {
+ if (GET_CODE (XVECEXP (PATTERN (insn), 0, i)) == CLOBBER)
+ XVECEXP (PATTERN (insn), 0, i)
+ = shallow_copy_rtx (XVECEXP (PATTERN (insn), 0, i));
+ control_flow_insn_deleted
+ |= subst_stack_regs_pat (insn, regstack,
+ XVECEXP (PATTERN (insn), 0, i));
+ }
}
else
control_flow_insn_deleted