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

            Bug ID: 106528
           Summary: Double semi-colon causes -Wmisleading-identation to
                    not emit warning
           Product: gcc
           Version: 12.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: baker.dylan.c at gmail dot com
  Target Milestone: ---

A double semi-colon will cause the misleading-indentation warning to miss that
a second indented statement is not part by the condiational block.

#include <stdio.h>

int main(void) {
    if (1)
        printf("%s", "true);;
        return 0;
    return 1;

Removing the extranious semi-colon from the printf() call will correct the
problem and gcc will emit a warning as expected.

I've tested with 11.3.1 and 12.1.0, and with clang 14, which has the same
behavior. This was noticed through a macro that adds a semi-colon in the macro
definition, and then has a semi-colon following the call to the macro.

Reply via email to