Since I'm unable to create an account to report a bug and got no reply
from gcc-bugzilla-account-requ...@gcc.gnu.org I'll dump this here.

Depending on the placement of a label Gcc gives a false positive warning
about misleading indentation. Below is a minimal working example to
reproduce and the output from Gcc.

Arsen Arsenović was so kind to confirm (on IRC) this bug is reproducible
with a current Gcc and asked me to report it.

/*
 * miside.c
 * MWE for a wrong warning shown with gcc -Wmisleading-indentation
 */

void
good(int c)
{
label:
        while (c != '-');
        if (c != '-')
                goto label;
}

void
bad(int c)
{
label:  while (c != '-');
        if (c != '-')
                goto label;
}

/*
% gcc -c -Wmisleading-indentation miside.c
miside.c: In function ‘bad’:
miside.c:18:9: warning: this ‘while’ clause does not guard... 
[-Wmisleading-indentation]
   18 | label:  while (c != '-');
      |         ^~~~~
miside.c:19:9: note: ...this statement, but the latter is misleadingly indented 
as if it were guarded by the ‘while’
   19 |         if (c != '-')
      |         ^~
*/

Reply via email to