On 07/13/2017 02:51 AM, Richard Sandiford wrote:
> This patch changes the iv modes in rtx_iv from machine_mode
> to scalar_int_mode.  It also passes the mode of the iv down
> to subroutines; this avoids the previous situation in which
> the mode information was sometimes lost and had to be added
> by the caller on return.
> 
> Some routines already took a mode argument, but the patch
> tries to standardise on passing it immediately before the
> argument it describes.
> 
> gcc/
> 2017-07-13  Richard Sandiford  <richard.sandif...@linaro.org>
>           Alan Hayward  <alan.hayw...@arm.com>
>           David Sherwood  <david.sherw...@arm.com>
> 
>       * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
>       scalar_int_mode.
>       (niter_desc): Likewise mode.
>       (iv_analyze): Add a mode parameter.
>       (biv_p): Likewise.
>       (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
>       and change its type to scalar_int_mode.
>       * loop-iv.c: Update commentary at head of file.
>       (iv_constant): Pass the mode paraeter before the rtx it describes
>       and change its type to scalar_int_mode.  Remove VOIDmode handling.
>       (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
>       (iv_extend): Likewise.
>       (shorten_into_mode): Likewise.
>       (iv_add): Use scalar_int_mode.
>       (iv_mult): Likewise.
>       (iv_shift): Likewise.
>       (canonicalize_iv_subregs): Likewise.
>       (get_biv_step_1): Pass the outer_mode parameter before the rtx
>       it describes and change its mode to scalar_int_mode.   Also change
>       the type of the returned inner_mode to scalar_int_mode.
>       (get_biv_step): Likewise, turning outer_mode from a pointer
>       into a direct parameter.  Update call to get_biv_step_1.
>       (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
>       iv_constant and get_biv_step.
>       (iv_analyze_expr): Pass the mode parameter before the rtx it describes
>       and change its type to scalar_int_mode.  Don't initialise iv->mode
>       to VOIDmode and remove later checks for its still being VOIDmode.
>       Update calls to iv_analyze_op and iv_analyze_expr.  Check
>       is_a <scalar_int_mode> when changing the mode under consideration.
>       (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
>       Update call to iv_analyze_expr.
>       (iv_analyze_op): Add a mode parameter.  Reject subregs whose
>       inner register is not also a scalar_int_mode.  Update call to
>       iv_analyze_biv.
>       (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
>       (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
>       (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
>       separate mode class checks.  Update calls to iv_analyze.  Remove
>       fix-up of VOIDmodes after iv_analyze_biv.
>       * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
>       don't have a scalar_int_mode.  Update call to biv_p.
OK.
jeff

Reply via email to