(expand_divmod): Always call expand_twoval_binop with psuedos as
authorRichard Kenner <kenner@gcc.gnu.org>
Sat, 11 Feb 1995 18:09:17 +0000 (13:09 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sat, 11 Feb 1995 18:09:17 +0000 (13:09 -0500)
targets.

From-SVN: r8905

gcc/expmed.c

index 7ba833bb808066542e264e49d99de2590e0202b1..75e0cf2cf1909b11f20139631ae1b147f040c57e 100644 (file)
@@ -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);
              }