From 04d6ea36a7f0b2124d1a102eae3727efddeb5875 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 30 Aug 2017 11:17:45 +0000 Subject: [PATCH] [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 Alan Hayward David Sherwood 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 Co-Authored-By: David Sherwood From-SVN: r251505 --- gcc/ChangeLog | 8 ++++++++ gcc/expr.c | 12 ++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5d467d0fc07..db9507bf6c4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * 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 Alan Hayward David Sherwood diff --git a/gcc/expr.c b/gcc/expr.c index f95a7fe64bf..7759ce78d92 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; -- 2.30.2