[48/77] Make subroutines of num_sign_bit_copies operate on scalar_int_mode
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 30 Aug 2017 11:17:01 +0000 (11:17 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 30 Aug 2017 11:17:01 +0000 (11:17 +0000)
commitf8265fb8e8e12c92eab0393488824bfb788ebfff
tree683737625050797f802f8d3dd4a2d0a2a64f7705
parent22527b59dbb10204626aeb8660a8e262377ac354
[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.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251500
gcc/ChangeLog
gcc/rtlanal.c