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

            Bug ID: 94774
           Summary: Uninitialized variable retval in function
                    try_substitute_return_value
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stefansf at linux dot ibm.com
  Target Milestone: ---

Created attachment 48377
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48377&action=edit
If SAFE then retval was initialised

While bootstrapping GCC on S/390 the following warning/error gets thrown:

gcc/gimple-ssa-sprintf.c: In function 'bool
handle_printf_call(gimple_stmt_iterator*, const vr_values*)':                   
gcc/gimple-ssa-sprintf.c:4184:8: error: '*((void*)& retval +8)' may be used
uninitialized in this function [-Werror=maybe-uninitialized]
 4183 |    && (retval[0] < target_int_max ()
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 4184 |        && retval[1] < target_int_max ()))
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc/gimple-ssa-sprintf.c:4123:26: note: '*((void*)& retval +8)' was declared
here
 4123 |   unsigned HOST_WIDE_INT retval[2];
      |                          ^~~~~~
gcc/gimple-ssa-sprintf.c:4214:14: error: 'retval' may be used uninitialized in
this function [-Werror=maybe-uninitialized]
 4214 |      fprintf (dump_file, "  %s %s-bounds return value "
      |      ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 4215 |        HOST_WIDE_INT_PRINT_UNSIGNED ".\n",
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 4216 |        what, inbounds, retval[0]);
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc/gimple-ssa-sprintf.c:4123:26: note: 'retval' was declared here
 4123 |   unsigned HOST_WIDE_INT retval[2];
      |                          ^~~~~~

The attached patch fixes this for me. Otherwise, one could also just initialize
array retval which may be more appropriate?

Reply via email to