aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-02-11 13:09:17 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-02-11 13:09:17 -0500
commit668443c98adf0e658a3b2cff251a01ee781f5033 (patch)
tree068fdc69c065f213ba29cfdcbbe40abc5201af66 /gcc/expmed.c
parentef0e53ce936f567b56f89b567f114c11d6441582 (diff)
downloadgcc-668443c98adf0e658a3b2cff251a01ee781f5033.zip
gcc-668443c98adf0e658a3b2cff251a01ee781f5033.tar.gz
gcc-668443c98adf0e658a3b2cff251a01ee781f5033.tar.bz2
(expand_divmod): Always call expand_twoval_binop with psuedos as
targets. From-SVN: r8905
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 7ba833b..75e0cf2 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -3159,14 +3159,17 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
and return the result right away. */
if (target == 0)
target = gen_reg_rtx (compute_mode);
+
if (rem_flag)
{
- remainder = target;
+ remainder
+ = GET_CODE (target) == REG ? target : gen_reg_rtx (compute_mode);
quotient = gen_reg_rtx (compute_mode);
}
else
{
- quotient = target;
+ quotient
+ = GET_CODE (target) == REG ? target : gen_reg_rtx (compute_mode);
remainder = gen_reg_rtx (compute_mode);
}
@@ -3283,14 +3286,17 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
value here, and return the result right away. */
if (target == 0)
target = gen_reg_rtx (compute_mode);
+
if (rem_flag)
{
- remainder = target;
+ remainder = (GET_CODE (target) == REG
+ ? target : gen_reg_rtx (compute_mode));
quotient = gen_reg_rtx (compute_mode);
}
else
{
- quotient = target;
+ quotient = (GET_CODE (target) == REG
+ ? target : gen_reg_rtx (compute_mode));
remainder = gen_reg_rtx (compute_mode);
}
@@ -3384,12 +3390,14 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
target = gen_reg_rtx (compute_mode);
if (rem_flag)
{
- remainder = target;
+ remainder= (GET_CODE (target) == REG
+ ? target : gen_reg_rtx (compute_mode));
quotient = gen_reg_rtx (compute_mode);
}
else
{
- quotient = target;
+ quotient = (GET_CODE (target) == REG
+ ? target : gen_reg_rtx (compute_mode));
remainder = gen_reg_rtx (compute_mode);
}