r242139 - /branches/ARM/sve-branch/gcc/combine.c
rsandifo@gcc.gnu.org
rsandifo@gcc.gnu.org
Fri Nov 11 17:06:00 GMT 2016
Author: rsandifo
Date: Fri Nov 11 17:06:56 2016
New Revision: 242139
URL: https://gcc.gnu.org/viewcvs?rev=242139&root=gcc&view=rev
Log:
Use scalar_int_mode in simplify_comparison
The main loop of simplify_comparison starts with:
if (GET_MODE_CLASS (mode) != MODE_INT
&& ! (mode == VOIDmode
&& (GET_CODE (op0) == COMPARE || COMPARISON_P (op0))))
break;
So VOIDmode is only acceptable when comparing a COMPARE,
EQ, NE, etc. operand against a constant. After this, the loop
calls simplify_compare_const to:
(a) bring the constant op1 closer to 0 where possible and
(b) use nonzero_bits and num_sign_bit_copies to get a simpler
constant.
(a) works for both integer and VOID modes, (b) is specific
to integer modes.
The loop then has a big switch statement that handles further
simplifications. This switch statement checks for COMPARISON_P
codes but not for COMPARE.
This patch uses scalar_int_mode to make the split between
(a) and (b) more explicit. It also takes the COMPARISON_P
handling out of the switch statement and does it first,
so that the rest of the loop can treat the mode as a
scalar_int_mode.
Modified:
branches/ARM/sve-branch/gcc/combine.c
More information about the Gcc-cvs
mailing list