optabs.c (expand_doubleword_mult): Avoid clobbering op0 and op1 whilst expanding...
authorRoger Sayle <roger@eyesopen.com>
Tue, 15 Mar 2005 23:30:23 +0000 (23:30 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Tue, 15 Mar 2005 23:30:23 +0000 (23:30 +0000)
* optabs.c (expand_doubleword_mult): Avoid clobbering op0 and
op1 whilst expanding the signed widenening multiply variant.

From-SVN: r96537

gcc/ChangeLog
gcc/optabs.c

index 4a1b3175ee05dfd6621bccc4b9d71227f343da13..dc9540c93ea86f1a023ac5017bb28774104d2438 100644 (file)
@@ -1,3 +1,8 @@
+2005-03-15  Roger Sayle  <roger@eyesopen.com>
+
+       * optabs.c (expand_doubleword_mult): Avoid clobbering op0 and
+       op1 whilst expanding the signed widenening multiply variant.
+
 2005-03-15  Richard Sandiford  <rsandifo@redhat.com>
 
        * toplev.c (display_target_options): Avoid unused variable warning if
index a28042a80aaf3cb21d557cfb5ff67a46104f014d..ccbf67034d72b8504cea786d8541c606ec060036 100644 (file)
@@ -843,7 +843,7 @@ expand_doubleword_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
                           NULL_RTX, 1, methods);
       if (temp)
        op0_high = expand_binop (word_mode, add_optab, op0_high, temp,
-                                op0_high, 0, OPTAB_DIRECT);
+                                NULL_RTX, 0, OPTAB_DIRECT);
       else
        {
          temp = expand_binop (word_mode, ashr_optab, op0_low, wordm1,
@@ -851,7 +851,7 @@ expand_doubleword_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
          if (!temp)
            return NULL_RTX;
          op0_high = expand_binop (word_mode, sub_optab, op0_high, temp,
-                                  op0_high, 0, OPTAB_DIRECT);
+                                  NULL_RTX, 0, OPTAB_DIRECT);
        }
 
       if (!op0_high)
@@ -872,7 +872,7 @@ expand_doubleword_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
                           NULL_RTX, 1, methods);
       if (temp)
        op1_high = expand_binop (word_mode, add_optab, op1_high, temp,
-                                op1_high, 0, OPTAB_DIRECT);
+                                NULL_RTX, 0, OPTAB_DIRECT);
       else
        {
          temp = expand_binop (word_mode, ashr_optab, op1_low, wordm1,
@@ -880,7 +880,7 @@ expand_doubleword_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
          if (!temp)
            return NULL_RTX;
          op1_high = expand_binop (word_mode, sub_optab, op1_high, temp,
-                                  op1_high, 0, OPTAB_DIRECT);
+                                  NULL_RTX, 0, OPTAB_DIRECT);
        }
 
       if (!op1_high)