expmed.c (expand_mult_highpart_adjust): Do not assume OP1 is a CONST_INT.
authorUlrich Weigand <uweigand@de.ibm.com>
Sat, 24 Apr 2004 01:03:11 +0000 (01:03 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Sat, 24 Apr 2004 01:03:11 +0000 (01:03 +0000)
* expmed.c (expand_mult_highpart_adjust): Do not assume OP1
is a CONST_INT.
(expand_mult_highpart_optab): Call expand_mult_highpart_adjust
with NARROW_OP1 instead of OP1.

From-SVN: r81127

gcc/ChangeLog
gcc/expmed.c

index 49f94fefaebe283f5f1a042cf9cde3d8f502dd58..2b717ebb5264017d7a0137f9f39caad955fd8eab 100644 (file)
@@ -1,3 +1,10 @@
+2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * expmed.c (expand_mult_highpart_adjust): Do not assume OP1
+       is a CONST_INT.
+       (expand_mult_highpart_optab): Call expand_mult_highpart_adjust
+       with NARROW_OP1 instead of OP1.
+
 2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
index 3eb745465dad629676e5658334e51bc66b7ead09..54959799411c3f2966365d9334cb0adfdc8e372d 100644 (file)
@@ -2841,7 +2841,6 @@ expand_mult_highpart_adjust (enum machine_mode mode, rtx adj_operand, rtx op0,
   rtx tem;
   enum rtx_code adj_code = unsignedp ? PLUS : MINUS;
 
-  op1 = gen_int_mode (INTVAL (op1), mode);
   tem = expand_shift (RSHIFT_EXPR, mode, op0,
                      build_int_2 (GET_MODE_BITSIZE (mode) - 1, 0),
                      NULL_RTX, 0);
@@ -2914,7 +2913,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
                          unsignedp, OPTAB_DIRECT);
       if (tem)
        /* We used the wrong signedness.  Adjust the result.  */
-       return expand_mult_highpart_adjust (mode, tem, op0, op1,
+       return expand_mult_highpart_adjust (mode, tem, op0, narrow_op1,
                                            tem, unsignedp);
     }
 
@@ -2954,7 +2953,7 @@ expand_mult_highpart_optab (enum machine_mode mode, rtx op0, rtx op1,
        {
          tem = extract_high_half (mode, tem);
          /* We used the wrong signedness.  Adjust the result.  */
-         return expand_mult_highpart_adjust (mode, tem, op0, op1,
+         return expand_mult_highpart_adjust (mode, tem, op0, narrow_op1,
                                              target, unsignedp);
        }
     }