From: Jeff Law Date: Tue, 26 Mar 1996 15:45:03 +0000 (-0700) Subject: expr.c (emit_push_insn): When doing a partial push... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9c7be814e66b0964a80c6b6c850083489c9aa219;p=platform%2Fupstream%2Fgcc.git expr.c (emit_push_insn): When doing a partial push... * expr.c (emit_push_insn): When doing a partial push, emit a CLOBBER so that flow doesn't think the entire register is live. From-SVN: r11622 --- diff --git a/gcc/expr.c b/gcc/expr.c index bcfcf97..47735da 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -2350,6 +2350,12 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra, Default is below for small data on big-endian machines; else above. */ enum direction where_pad = FUNCTION_ARG_PADDING (mode, type); + /* If we're placing part of X into a register and part of X onto + the stack, indicate that the entire register is clobbered to + keep flow from thinking the unused part of the register is live. */ + if (partial) + emit_insn (gen_rtx (CLOBBER, VOIDmode, reg)); + /* Invert direction if stack is post-update. */ if (STACK_PUSH_CODE == POST_INC || STACK_PUSH_CODE == POST_DEC) if (where_pad != none)