[48/77] Make subroutines of num_sign_bit_copies operate on scalar_int_mode
commit2ed966b85ea94758cca8e88534697f3357f00650
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Aug 2017 11:17:01 +0000 (30 11:17 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Aug 2017 11:17:01 +0000 (30 11:17 +0000)
tree683737625050797f802f8d3dd4a2d0a2a64f7705
parentb8b7729146a581215fe7c0d4c9b0b008d8286f10
[48/77] Make subroutines of num_sign_bit_copies operate on scalar_int_mode

Similarly to the nonzero_bits patch, this one moves the mode
class check and VOIDmode handling from num_sign_bit_copies1
to num_sign_bit_copies itself, then changes the subroutines
to operate on scalar_int_modes.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
than in subroutines.  Return 1 for non-integer modes.
(cached_num_sign_bit_copies): Change the type of the mode parameter
to scalar_int_mode.
(num_sign_bit_copies1): Likewise.  Remove early exit for other mode
classes.  Handle CONST_INT_P first and then check whether X also
has a scalar integer mode.  Check the same thing for inner registers
of a SUBREG and for values that are being extended or truncated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251500 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/rtlanal.c