[47/77] Make subroutines of nonzero_bits operate on scalar_int_mode
authorRichard Sandiford <richard.sandiford@linaro.org>
Wed, 30 Aug 2017 11:16:42 +0000 (11:16 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 30 Aug 2017 11:16:42 +0000 (11:16 +0000)
commit22527b59dbb10204626aeb8660a8e262377ac354
tree2ca4ddec1ff92a9f35161b220099f7c87ddd730f
parentb4e6c85e3cfdd4e0863277c09461e3709c42981d
[47/77] Make subroutines of nonzero_bits operate on scalar_int_mode

nonzero_bits1 assumed that all bits of a floating-point or vector mode
were needed.  It seems likely that fixed-point modes should have been
handled in the same way.  After excluding those, the only remaining
modes that are likely to be useful are scalar integer ones.

This patch moves the mode class check to nonzero_bits itself, along
with the handling of mode == VOIDmode.  The subroutines of nonzero_bits
can then take 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 (nonzero_bits): Handle VOIDmode here rather than
in subroutines.  Return the mode mask for non-integer modes.
(cached_nonzero_bits): Change the type of the mode parameter
to scalar_int_mode.
(nonzero_bits1): Likewise.  Remove early exit for other mode
classes.  Handle CONST_INT_P first and then check whether X
also has a scalar integer mode.

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