r251478 - in /trunk/gcc: ChangeLog combine.c ex...
rsandifo@gcc.gnu.org
rsandifo@gcc.gnu.org
Wed Aug 30 11:11:00 GMT 2017
Author: rsandifo
Date: Wed Aug 30 11:11:42 2017
New Revision: 251478
URL: https://gcc.gnu.org/viewcvs?rev=251478&root=gcc&view=rev
Log:
[26/77] Use is_a <scalar_int_mode> in subreg/extract simplifications
This patch adds is_a <scalar_int_mode> checks to various places that
were optimising subregs or extractions in ways that only made sense
for scalar integers. Often the subreg transformations were looking
for extends, truncates or shifts and trying to remove the subreg, which
wouldn't be correct if the SUBREG_REG was a vector rather than a scalar.
The simplify_binary_operation_1 part also removes a redundant:
GET_MODE (opleft) == GET_MODE (XEXP (opright, 0))
since this must be true for:
(ior A (lshifrt B ...)) A == opleft, B == XEXP (opright, 0)
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
(make_compound_operation_int): Likewise.
(change_zero_ext): Likewise.
* expr.c (convert_move): Likewise.
(convert_modes): Likewise.
* fwprop.c (forward_propagate_subreg): Likewise.
* loop-iv.c (get_biv_step_1): Likewise.
* optabs.c (widen_operand): Likewise.
* postreload.c (move2add_valid_value_p): Likewise.
* recog.c (simplify_while_replacing): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
(simplify_binary_operation_1): Likewise. Remove redundant
mode equality check.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine.c
trunk/gcc/expr.c
trunk/gcc/fwprop.c
trunk/gcc/loop-iv.c
trunk/gcc/optabs.c
trunk/gcc/postreload.c
trunk/gcc/recog.c
trunk/gcc/simplify-rtx.c
More information about the Gcc-cvs
mailing list