Stefan Schulze Frielinghaus via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
> While bootstrapping GCC on S/390 the following warning/error is raised:
>
> gcc/var-tracking.c:10239:34: error: 'pre' may be used uninitialized in this 
> function [-Werror=maybe-uninitialized]
> 10239 |       VTI (bb)->out.stack_adjust += pre;
>       |                                  ^
>
> The lines of interest are:
>
>   HOST_WIDE_INT pre, post = 0;
>   // ...
>   if (!frame_pointer_needed)
>     {
>       insn_stack_adjust_offset_pre_post (insn, &pre, &post);
>       // ...
>     }
>
>   // ...
>   adjust_insn (bb, insn);
>
>   if (!frame_pointer_needed && pre)
>     VTI (bb)->out.stack_adjust += pre;
>
> Both if statements depend on global variable frame_pointer_needed.  In 
> function
> insn_stack_adjust_offset_pre_post local variable pre is initialized.  The
> problematic part is the function call between both if statements.  Since
> adjust_insn also calls functions which are defined in a different compilation
> unit, we are not able to prove that global variable frame_pointer_needed is 
> not
> altered by adjust_insn and its siblings.  Thus we must assume that
> frame_pointer_needed may be true before the call and false afterwards which
> renders the warning true (admitted the location hint is not totally perfect).
> By initialising pre we silence the warning.
>
> Bootstrapped and regtested on S/390. Ok for master?
>
> gcc/ChangeLog:
>
> 2020-04-28  Stefan Schulze Frielinghaus  <stefa...@linux.ibm.com>
>
>         * var-tracking.c (vt_initialize): Initialize local variable pre.

OK, thanks.

Richard

Reply via email to