aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-08-30 11:17:45 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-08-30 11:17:45 +0000
commit04d6ea36a7f0b2124d1a102eae3727efddeb5875 (patch)
tree446be370e6d10f03b5bc3943b0280e093b8eb6b0 /gcc/expr.c
parent1a52709222c9c5fd3b9446d3ef1db6b87d020e13 (diff)
downloadgcc-04d6ea36a7f0b2124d1a102eae3727efddeb5875.zip
gcc-04d6ea36a7f0b2124d1a102eae3727efddeb5875.tar.gz
gcc-04d6ea36a7f0b2124d1a102eae3727efddeb5875.tar.bz2
[53/77] Pass a mode to const_scalar_mask_from_tree
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
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index f95a7fe..7759ce7 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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;