aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-05-27 20:52:20 +0000
committerRichard Stallman <rms@gnu.org>1992-05-27 20:52:20 +0000
commitd8064a5d0ab07d0e39867ee22f8545ec6c4bb904 (patch)
tree338a61fcec20a04ccc68dd565ec42b9a2fca2eaa /gcc/expmed.c
parent55b2f10fbe1dff88a3d8c39ead368e1f06c8aaba (diff)
downloadgcc-d8064a5d0ab07d0e39867ee22f8545ec6c4bb904.zip
gcc-d8064a5d0ab07d0e39867ee22f8545ec6c4bb904.tar.gz
gcc-d8064a5d0ab07d0e39867ee22f8545ec6c4bb904.tar.bz2
*** empty log message ***
From-SVN: r1101
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 07a6c27..9d0962e 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -2262,6 +2262,11 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
if (rem_flag && GET_CODE (op1) == MEM && MEM_VOLATILE_P (op1))
op1 = force_reg (compute_mode, op1);
+ /* If we are computing the remainder, op0 will be needed later to calculate
+ X - Y * (X / Y), therefore cannot be clobbered. */
+ if (rem_flag)
+ can_clobber_op0 = 0;
+
if (target == 0 || GET_MODE (target) != compute_mode)
target = gen_reg_rtx (compute_mode);