diff options
author | Ilya Enkovich <enkovich.gnu@gmail.com> | 2016-01-11 10:27:17 +0000 |
---|---|---|
committer | Ilya Enkovich <ienkovich@gcc.gnu.org> | 2016-01-11 10:27:17 +0000 |
commit | 83834c094206928ec7a3c43850f5e04889da640e (patch) | |
tree | ae811e2413e2fbf7ab3c5f0df5dc2cf1b1af4dc4 /gcc/optabs.c | |
parent | dcf89d578058ed538e3dcf4e151d99a267e81bf4 (diff) | |
download | gcc-83834c094206928ec7a3c43850f5e04889da640e.tar.gz |
re PR target/69010 (Boolean vector constant with a scalar mode is expanded incorrectly)
gcc/
PR target/69010
* expr.c (expand_expr_real_1): For boolean vector constants
with a scalar mode use const_scalar_mask_from_tree.
(const_scalar_mask_from_tree): New.
* optabs.c (expand_vec_cond_mask_expr): Use mask mode
assigned to a mask type to handle constants.
gcc/testsuite/
PR target/69010
* gcc.target/i386/pr69010.c: New test.
From-SVN: r232216
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index d9c118369bb..e1ba6150473 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -5547,7 +5547,7 @@ expand_vec_cond_mask_expr (tree vec_cond_type, tree op0, tree op1, tree op2, rtx_op1 = expand_normal (op1); rtx_op2 = expand_normal (op2); - mask = force_reg (GET_MODE (mask), mask); + mask = force_reg (mask_mode, mask); rtx_op1 = force_reg (GET_MODE (rtx_op1), rtx_op1); create_output_operand (&ops[0], target, mode); |