[56/77] Use the more specific type when two modes are known to be equal
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 30 Aug 2017 11:18:12 +0000 (11:18 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 30 Aug 2017 11:18:12 +0000 (11:18 +0000)
This patch adjusts a couple of cases in which we had established
that two modes were equal and happened to be using the one with the
more general type instead of the one with the more specific type.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* expr.c (expand_expr_real_2): Use word_mode instead of innermode
when the two are known to be equal.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251508

gcc/ChangeLog
gcc/expr.c

index 7d3d304117aa6c6b0cab006651a529574234c926..15f951f78ba3380e59a86a4db55a7d5fbea9de40 100644 (file)
@@ -1,3 +1,10 @@
+2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * expr.c (expand_expr_real_2): Use word_mode instead of innermode
+       when the two are known to be equal.
+
 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>
index 7759ce78d92bbbbe2c62cae862f7dd46a4d9d663..cdebba35daa2339e4f255783f7588aca3bfe42d1 100644 (file)
@@ -8679,7 +8679,7 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode,
                  rtx htem, hipart;
                  op0 = expand_normal (treeop0);
                  if (TREE_CODE (treeop1) == INTEGER_CST)
-                   op1 = convert_modes (innermode, mode,
+                   op1 = convert_modes (word_mode, mode,
                                         expand_normal (treeop1),
                                         TYPE_UNSIGNED (TREE_TYPE (treeop1)));
                  else
@@ -8690,8 +8690,8 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode,
                    goto widen_mult_const;
                  temp = expand_binop (mode, other_optab, op0, op1, target,
                                       unsignedp, OPTAB_LIB_WIDEN);
-                 hipart = gen_highpart (innermode, temp);
-                 htem = expand_mult_highpart_adjust (innermode, hipart,
+                 hipart = gen_highpart (word_mode, temp);
+                 htem = expand_mult_highpart_adjust (word_mode, hipart,
                                                      op0, op1, hipart,
                                                      zextend_p);
                  if (htem != hipart)