https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110531

Kewen Lin <linkw at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org

--- Comment #1 from Kewen Lin <linkw at gcc dot gnu.org> ---
(In reply to Hao Liu from comment #0)
> This seems an obvious bug in tree-vect-loop.cc:
> 
> (1) This var is declared (but not initialized) and used in function
> vect_analyze_loop_1:
> 
>   bool slp_done_for_suggested_uf;           <---- Warning, this is not
> initialized
> 
>   /* Run the main analysis.  */
>   opt_result res = vect_analyze_loop_2 (loop_vinfo, fatal,
>                                       &suggested_unroll_factor,
>                                       slp_done_for_suggested_uf);
> 
> (2) It is used before set in function vect_analyze_loop_2:
> static opt_result
> vect_analyze_loop_2 (loop_vec_info loop_vinfo, bool &fatal,
>                    unsigned *suggested_unroll_factor,
>                    bool& slp_done_for_suggested_uf)
>   ...
>   bool slp = !applying_suggested_uf || slp_done_for_suggested_uf;  <--- used
> without initialized
>   ...
>   slp_done_for_suggested_uf = slp;
> 
> 
> I don't know the detail logic and wonder if it should be initialized as
> "true" or "false" (probably it should be "false").

Is the warning from some static analyzer?

This behavior was intentional, in the first time to call vect_analyze_loop_2,
we have loop_vinfo->suggested_unroll_factor = 1, applying_suggested_uf would be
false always, it means that at the below place

  bool slp = !applying_suggested_uf || slp_done_for_suggested_uf;

slp should be true always (always do analyze slp), it doesn't care what's in
slp_done_for_suggested_uf.

For a successful analysis, we would definitely do:

  slp_done_for_suggested_uf = slp;

So in the 2nd call to vect_analyze_loop_2, slp_done_for_suggested_uf should get
assigned by expected valu (should not be uninitialized).

Reply via email to