On Thu, 4 Sep 2025, Martin Uecker wrote:

>     This change adds a warning -Wuse-after-missed-init which is similar to
>     -Wjump-misses-init but better supports idiomatic C code by emitting a
>     diagnostic only when the variable is used somewhere after the label,
>     e.g. no warning is emitted in the following example.  The new warning
>     is activated for -Wall.

I'm not sure how reliable this approach can be, as something reliable 
might need to be flow-sensitive.  The tests don't really seem to cover the 
interesting cases (which I'd hope would be covered even if not 
implemented), such as:

  goto label;
  int i = 1;
  while (true)
    {
      return i;
      label:
    }

where i is used with the initialization having been skipped, but lexically 
the label appears after the use of i, or

  goto label;
  int i = 1;
  if (true)
    {
      label: return 0;
    }
  else
    return i;

where the label appears lexically before the use of i but the use isn't 
reachable from the label.

> +  else if (!lookup_name_in_scope (DECL_NAME (decl), current_scope))
> +    {
> +      /* The are already after the scope where the variable is declared,

"The are" seems wrong.

Also, lookup_name_in_scope seems suspect here.  What if the name is 
declared in the current scope but it's a different, unrelated declaration 
- can that happen with this code?

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to