On 07/13/2017 02:55 AM, Richard Sandiford wrote: > 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. > > gcc/ > 2017-07-13 Richard Sandiford <richard.sandif...@linaro.org> > Alan Hayward <alan.hayw...@arm.com> > David Sherwood <david.sherw...@arm.com> > > * 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. OK. I suspect not handling fixed-point modes like floating point modes was just an oversight.
jeff