diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-02-11 13:09:17 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-02-11 13:09:17 -0500 |
commit | 668443c98adf0e658a3b2cff251a01ee781f5033 (patch) | |
tree | 068fdc69c065f213ba29cfdcbbe40abc5201af66 /gcc/expmed.c | |
parent | ef0e53ce936f567b56f89b567f114c11d6441582 (diff) | |
download | gcc-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.c | 20 |
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); } |