OSDN Git Service

* expmed.c (expand_mult_const) <case alg_shift>: Expand shift into
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 5 Aug 2010 12:03:36 +0000 (12:03 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 5 Aug 2010 12:03:36 +0000 (12:03 +0000)
temporary. Emit move from temporary to accum, so REG_EQUAL note will
be attached to this insn in correct mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162910 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expmed.c

index 3456501..0b0d418 100644 (file)
@@ -1,5 +1,11 @@
 2010-08-05  Uros Bizjak  <ubizjak@gmail.com>
 
+       * expmed.c (expand_mult_const) <case alg_shift>: Expand shift into
+       temporary. Emit move from temporary to accum, so REG_EQUAL note will
+       be attached to this insn in correct mode.
+
+2010-08-05  Uros Bizjak  <ubizjak@gmail.com>
+
        * config/i386/i386.c (ix86_decompose_address): Check for SI_REG
        using REGNO of base_reg directly.
 
index ddace9f..9aa5ff6 100644 (file)
@@ -2904,9 +2904,11 @@ expand_mult_const (enum machine_mode mode, rtx op0, HOST_WIDE_INT val,
       switch (alg->op[opno])
        {
        case alg_shift:
-         accum = expand_shift (LSHIFT_EXPR, mode, accum,
-                               build_int_cst (NULL_TREE, log),
-                               NULL_RTX, 0);
+         tem = expand_shift (LSHIFT_EXPR, mode, accum,
+                             build_int_cst (NULL_TREE, log),
+                             NULL_RTX, 0);
+         /* REG_EQUAL note will be attached to the following insn.  */
+         emit_move_insn (accum, tem);
          val_so_far <<= log;
          break;