On Tue, Aug 3, 2021 at 2:35 PM Richard Sandiford via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> After vect_analyze_loop has successfully analysed a loop for
> one base vector mode B1, it considers using following base vector
> modes to vectorise an epilogue.  However, for VECT_COMPARE_COSTS,
> a later mode B2 might turn out to be better than B1 was.  Initially
> this comparison will be between an epilogue loop (for B2) and a main
> loop (for B1).  However, in r11-6458 I'd added code to reanalyse the
> B2 epilogue loop as a main loop, partly for correctness and partly
> for better costing.
>
> This can lead to a situation in which we think that the B2 epilogue
> loop was better than the B1 main loop, but that the B2 main loop is
> not better than the B1 main loop.  There was no dump message to say
> that this had happened, which made it look like B2 had still won.
>
> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

OK.

> Richard
>
>
> gcc/
>         * tree-vect-loop.c (vect_analyze_loop): Print a dump message
>         when a reanalyzed loop fails to be cheaper than the current
>         main loop.
> ---
>  gcc/tree-vect-loop.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
> index 00a57b2ba62..48a54b0957f 100644
> --- a/gcc/tree-vect-loop.c
> +++ b/gcc/tree-vect-loop.c
> @@ -3064,7 +3064,16 @@ vect_analyze_loop (class loop *loop, vec_info_shared 
> *shared)
>                         = opt_loop_vec_info::success (main_loop_vinfo);
>                     }
>                   else
> -                   delete main_loop_vinfo;
> +                   {
> +                     if (dump_enabled_p ())
> +                       dump_printf_loc (MSG_NOTE, vect_location,
> +                                        "***** No longer preferring vector"
> +                                        " mode %s after reanalyzing the loop"
> +                                        " as a main loop\n",
> +                                        GET_MODE_NAME
> +                                          (main_loop_vinfo->vector_mode));
> +                     delete main_loop_vinfo;
> +                   }
>                 }
>             }
>
> --
> 2.17.1
>

Reply via email to