aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>1997-10-31 00:40:46 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>1997-10-31 00:40:46 +0000
commit59fe8c2c207c0e4309ee5c9734ed16bd096eeedd (patch)
tree4fb95bf9642fef03d19c01d88d43fb99b5c8694f
parentd1271dedce4457a960fbe78d6679161c29274670 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/expr.c4
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
diff --git a/gcc/expr.c b/gcc/expr.c
index 5cd1b43..19a5e1b 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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);