diff options
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r-- | gcc/reg-stack.c | 11 |
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 |