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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |11.4.0
             Status|UNCONFIRMED                 |NEW
            Summary|Incorrect warning from      |[12/13/14 Regression]
                   |-Wmaybe-uninitialized       |Incorrect warning from
                   |                            |-Wmaybe-uninitialized
   Last reconfirmed|2023-08-30 00:00:00         |2023-08-31
   Target Milestone|---                         |12.4
      Known to fail|                            |12.1.0, 12.2.0, 13.2.0,
                   |                            |14.0
           Keywords|                            |needs-reduction
     Ever confirmed|0                           |1

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

rettype_58 = enforce_generic_type_consistency (&actual_arg_types,
&declared_arg_types, 0, _56, 0);

and we reach this on the args == 0 path where indeed actual_arg_types
is uninitialized and our heuristic says that a const qualified pointer
is an input and thus might be read.  So you get a maybe-uninitialized
diagnostic at the call.

GCC doesn't know that the 'nargs' argument relates to the array and
that at most 'nargs' (zero here) arguments are inspected.

So I think it works as designed, we have some duplicate bugreports
complaining about this "heuristic".

We are exposing this to ourselves by optimizing the args == 0 case
(skipping the initialization loop and constant propagating the
nargs argument).  Aka jump-threading.

Reply via email to