Generate constant for shift once.
authorTom Rix <trix@redhat.com>
Mon, 22 Apr 2002 23:20:12 +0000 (23:20 +0000)
committerTom Rix <trix@gcc.gnu.org>
Mon, 22 Apr 2002 23:20:12 +0000 (23:20 +0000)
From-SVN: r52644

gcc/ChangeLog
gcc/expmed.c

index 8e241418bba9f3e459e4aca12b8da6c911aafb23..b10f351c85ce90a574b73fcd7ac8e601d3432b1e 100644 (file)
@@ -1,3 +1,7 @@
+2002-04-22  Tom Rix  <trix@redhat.com>
+
+       * expmed.c (init_expmed): Generate shifted constant once.
+
 2002-04-22  Zack Weinberg  <zack@codesourcery.com>
 
        * c-lex.c (lex_charconst): Call convert to get constant in
index 76b90fa2b437f33c765cc3866574511f66392150..e60ccbf7924162fd5d8491694d209a3e644e1132 100644 (file)
@@ -144,19 +144,18 @@ init_expmed ()
 
   for (m = 1; m < MAX_BITS_PER_WORD; m++)
     {
+      rtx c_int = GEN_INT ((HOST_WIDE_INT) 1 << m);
       shift_cost[m] = shiftadd_cost[m] = shiftsub_cost[m] = 32000;
 
       XEXP (SET_SRC (PATTERN (shift_insn)), 1) = GEN_INT (m);
       if (recog (PATTERN (shift_insn), shift_insn, &dummy) >= 0)
        shift_cost[m] = rtx_cost (SET_SRC (PATTERN (shift_insn)), SET);
 
-      XEXP (XEXP (SET_SRC (PATTERN (shiftadd_insn)), 0), 1)
-       = GEN_INT ((HOST_WIDE_INT) 1 << m);
+      XEXP (XEXP (SET_SRC (PATTERN (shiftadd_insn)), 0), 1) = c_int;
       if (recog (PATTERN (shiftadd_insn), shiftadd_insn, &dummy) >= 0)
        shiftadd_cost[m] = rtx_cost (SET_SRC (PATTERN (shiftadd_insn)), SET);
 
-      XEXP (XEXP (SET_SRC (PATTERN (shiftsub_insn)), 0), 1)
-       = GEN_INT ((HOST_WIDE_INT) 1 << m);
+      XEXP (XEXP (SET_SRC (PATTERN (shiftsub_insn)), 0), 1) = c_int;
       if (recog (PATTERN (shiftsub_insn), shiftsub_insn, &dummy) >= 0)
        shiftsub_cost[m] = rtx_cost (SET_SRC (PATTERN (shiftsub_insn)), SET);
     }