lower-subreg.c (shift_cost): Use set_src_cost, avoiding the SET.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 6 May 2012 18:55:20 +0000 (18:55 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 6 May 2012 18:55:20 +0000 (18:55 +0000)
gcc/
* lower-subreg.c (shift_cost): Use set_src_cost, avoiding the SET.
(compute_costs): Likewise for the zero extension.  Use set_rtx_cost
to compute the cost of moves.  Set the mode of the target register.

From-SVN: r187212

gcc/ChangeLog
gcc/lower-subreg.c

index 364d2d7871e59da1a756c8a5839f2ede5b57e5d2..8d6637fbc1973971f51d88cda1d624b3cb5574f3 100644 (file)
@@ -1,3 +1,9 @@
+2012-05-06  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * lower-subreg.c (shift_cost): Use set_src_cost, avoiding the SET.
+       (compute_costs): Likewise for the zero extension.  Use set_rtx_cost
+       to compute the cost of moves.  Set the mode of the target register.
+
 2012-05-05  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * rtl.h (plus_constant, plus_constant_mode): Merge into a single
index a11b33d1391cccb4997d1832ef61af9a4ff77ae5..4a9227512963ad0919080e8e6ad52f5d9700b6bf 100644 (file)
@@ -135,13 +135,11 @@ static int
 shift_cost (bool speed_p, struct cost_rtxes *rtxes, enum rtx_code code,
            enum machine_mode mode, int op1)
 {
-  PUT_MODE (rtxes->target, mode);
   PUT_CODE (rtxes->shift, code);
   PUT_MODE (rtxes->shift, mode);
   PUT_MODE (rtxes->source, mode);
   XEXP (rtxes->shift, 1) = GEN_INT (op1);
-  SET_SRC (rtxes->set) = rtxes->shift;
-  return insn_rtx_cost (rtxes->set, speed_p);
+  return set_src_cost (rtxes->shift, speed_p);
 }
 
 /* For each X in the range [0, BITS_PER_WORD), set SPLITTING[X]
@@ -189,11 +187,12 @@ compute_costs (bool speed_p, struct cost_rtxes *rtxes)
   unsigned int i;
   int word_move_zero_cost, word_move_cost;
 
+  PUT_MODE (rtxes->target, word_mode);
   SET_SRC (rtxes->set) = CONST0_RTX (word_mode);
-  word_move_zero_cost = insn_rtx_cost (rtxes->set, speed_p);
+  word_move_zero_cost = set_rtx_cost (rtxes->set, speed_p);
 
   SET_SRC (rtxes->set) = rtxes->source;
-  word_move_cost = insn_rtx_cost (rtxes->set, speed_p);
+  word_move_cost = set_rtx_cost (rtxes->set, speed_p);
 
   if (LOG_COSTS)
     fprintf (stderr, "%s move: from zero cost %d, from reg cost %d\n",
@@ -209,7 +208,7 @@ compute_costs (bool speed_p, struct cost_rtxes *rtxes)
 
          PUT_MODE (rtxes->target, mode);
          PUT_MODE (rtxes->source, mode);
-         mode_move_cost = insn_rtx_cost (rtxes->set, speed_p);
+         mode_move_cost = set_rtx_cost (rtxes->set, speed_p);
 
          if (LOG_COSTS)
            fprintf (stderr, "%s move: original cost %d, split cost %d * %d\n",
@@ -236,10 +235,8 @@ compute_costs (bool speed_p, struct cost_rtxes *rtxes)
 
       /* The only case here to check to see if moving the upper part with a
         zero is cheaper than doing the zext itself.  */
-      PUT_MODE (rtxes->target, twice_word_mode);
       PUT_MODE (rtxes->source, word_mode);
-      SET_SRC (rtxes->set) = rtxes->zext;
-      zext_cost = insn_rtx_cost (rtxes->set, speed_p);
+      zext_cost = set_src_cost (rtxes->zext, speed_p);
 
       if (LOG_COSTS)
        fprintf (stderr, "%s %s: original cost %d, split cost %d + %d\n",