diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1997-10-31 00:40:46 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 1997-10-31 00:40:46 +0000 |
commit | 59fe8c2c207c0e4309ee5c9734ed16bd096eeedd (patch) | |
tree | 4fb95bf9642fef03d19c01d88d43fb99b5c8694f | |
parent | d1271dedce4457a960fbe78d6679161c29274670 (diff) | |
download | gcc-59fe8c2c207c0e4309ee5c9734ed16bd096eeedd.zip gcc-59fe8c2c207c0e4309ee5c9734ed16bd096eeedd.tar.gz gcc-59fe8c2c207c0e4309ee5c9734ed16bd096eeedd.tar.bz2 |
expr.c (expand_increment): When enqueing a postincrement for a MEM...
* expr.c (expand_increment): When enqueing a postincrement for a MEM,
use copy_to_reg if address is not a general_operand.
From-SVN: r16247
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78f47c3..a417d4d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 31 00:34:55 1996 J"orn Rennecke <amylaar@cygnus.co.uk> + + * expr.c (expand_increment): When enqueing a postincrement for a MEM, + use copy_to_reg if address is not a general_operand. + Fri Oct 31 00:16:55 1997 J"orn Rennecke <amylaar@cygnus.co.uk> * profile.c (output_func_start_profiler): Clear flag_inline_functions @@ -9847,7 +9847,9 @@ expand_increment (exp, post, ignore) } if (icode != (int) CODE_FOR_nothing && GET_CODE (op0) == MEM) { - rtx addr = force_reg (Pmode, XEXP (op0, 0)); + rtx addr = (general_operand (XEXP (op0, 0), mode) + ? force_reg (Pmode, XEXP (op0, 0)) + : copy_to_reg (XEXP (op0, 0))); rtx temp, result; op0 = change_address (op0, VOIDmode, addr); |