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