From: Richard Kenner Date: Wed, 16 Feb 1994 00:30:29 +0000 (-0500) Subject: (expand_increment): Handle both BAD_SUBREG and POST. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=79777b798cb818ea1ac419e357263158f7b72acd;p=gcc.git (expand_increment): Handle both BAD_SUBREG and POST. From-SVN: r6567 --- diff --git a/gcc/expr.c b/gcc/expr.c index c4356ae17f9..ae1e5a46569 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -7951,7 +7951,15 @@ expand_increment (exp, post) SUBREG_REG (op0) = copy_to_reg (SUBREG_REG (op0)); else if (GET_CODE (op0) == SUBREG && GET_MODE_BITSIZE (GET_MODE (op0)) < BITS_PER_WORD) - bad_subreg = 1; + { + /* We cannot increment this SUBREG in place. If we are + post-incrementing, get a copy of the old value. Otherwise, + just mark that we cannot increment in place. */ + if (post) + op0 = copy_to_reg (op0); + else + bad_subreg = 1; + } op0_is_copy = ((GET_CODE (op0) == SUBREG || GET_CODE (op0) == REG) && temp != get_last_insn ());