Use tree_vector_builder::new_binary_operation for folding
authorRichard Sandiford <richard.sandiford@linaro.org>
Thu, 7 Dec 2017 18:41:35 +0000 (18:41 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 7 Dec 2017 18:41:35 +0000 (18:41 +0000)
commitb3def403fa7ae89679468b8f986cab7361c1034d
treed1df9bee6f0c02966cfbd1044066b3e1bcea9f8e
parent059c18abcb9c88bb5a85eb3ce468ffa7252da230
Use tree_vector_builder::new_binary_operation for folding

This patch makes fold-const.c operate directly on the VECTOR_CST
encoding when folding an operation that has two VECTOR_CST inputs.

2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vector-builder.h
(tree_vector_builder::new_binary_operation): Declare.
* tree-vector-builder.c
(tree_vector_builder::new_binary_operation): New function.
* fold-const.c (fold_relational_const): Use it.
(const_binop): Likewise.  Check that both input vectors have
the same number of elements, thus excluding things like WIDEN_SUM.
Check whether it is possible to operate directly on the encodings
of stepped inputs.

From-SVN: r255477
gcc/ChangeLog
gcc/fold-const.c
gcc/tree-vector-builder.c
gcc/tree-vector-builder.h