[53/77] Pass a mode to const_scalar_mask_from_tree
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 30 Aug 2017 11:17:45 +0000 (11:17 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 30 Aug 2017 11:17:45 +0000 (11:17 +0000)
The caller of const_scalar_mask_from_tree has proven that
the mode is a MODE_INT, so this patch passes it down as a
scalar_int_mode.  It also expands the comment a little.

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

gcc/
* expr.c (const_scalar_mask_from_tree): Add a mode argument.
Expand commentary.
(expand_expr_real_1): Update call accordingly.

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

gcc/ChangeLog
gcc/expr.c

index 5d467d0fc07c92427761af6ad4bdeac4e5bdd779..db9507bf6c4adebe92255c04dff96cfd9b319efd 100644 (file)
@@ -1,3 +1,11 @@
+2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
+           Alan Hayward  <alan.hayward@arm.com>
+           David Sherwood  <david.sherwood@arm.com>
+
+       * expr.c (const_scalar_mask_from_tree): Add a mode argument.
+       Expand commentary.
+       (expand_expr_real_1): Update call accordingly.
+
 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>
index f95a7fe64bf7b0e458ec21d8c0adcf5f6e49f6ed..7759ce78d92bbbbe2c62cae862f7dd46a4d9d663 100644 (file)
@@ -99,7 +99,7 @@ static void emit_single_push_insn (machine_mode, rtx, tree);
 static void do_tablejump (rtx, machine_mode, rtx, rtx, rtx,
                          profile_probability);
 static rtx const_vector_from_tree (tree);
-static rtx const_scalar_mask_from_tree (tree);
+static rtx const_scalar_mask_from_tree (scalar_int_mode, tree);
 static tree tree_expr_size (const_tree);
 static HOST_WIDE_INT int_expr_size (tree);
 
@@ -9969,7 +9969,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
        if (is_int_mode (mode, &int_mode))
          {
            if (VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (exp)))
-             return const_scalar_mask_from_tree (exp);
+             return const_scalar_mask_from_tree (int_mode, exp);
            else
              {
                tree type_for_mode
@@ -11724,12 +11724,12 @@ const_vector_mask_from_tree (tree exp)
   return gen_rtx_CONST_VECTOR (mode, v);
 }
 
-/* Return a CONST_INT rtx representing vector mask for
-   a VECTOR_CST of booleans.  */
+/* EXP is a VECTOR_CST in which each element is either all-zeros or all-ones.
+   Return a constant scalar rtx of mode MODE in which bit X is set if element
+   X of EXP is nonzero.  */
 static rtx
-const_scalar_mask_from_tree (tree exp)
+const_scalar_mask_from_tree (scalar_int_mode mode, tree exp)
 {
-  machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
   wide_int res = wi::zero (GET_MODE_PRECISION (mode));
   tree elt;
   unsigned i;