summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>1997-10-31 00:40:46 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>1997-10-31 00:40:46 +0000
commit49d768f2eb491c5ae8183a3c97b3ab3c470b7c7f (patch)
tree4fb95bf9642fef03d19c01d88d43fb99b5c8694f /gcc/expr.c
parentb1ea96675809704a07cccf6732c054895cf71740 (diff)
downloadgcc-49d768f2eb491c5ae8183a3c97b3ab3c470b7c7f.tar.gz
* expr.c (expand_increment): When enqueing a postincrement for a MEM,
use copy_to_reg if address is not a general_operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16247 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 5cd1b435780..19a5e1b1735 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);