https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69122
Bug ID: 69122 Summary: -Wmisleading-indentation false positive with empty macros Product: gcc Version: 5.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: thiago at kde dot org Target Milestone: --- When a statement is preceded by an empty macro, the warning triggers incorrectly: $ cat /tmp/test.c #define emit void g(); void f(int x) { if (x) g(); emit g(); } $ ~/gcc6/bin/gcc -c -O3 -Wall /tmp/test.c /tmp/test.c: In function ‘f’: /tmp/test.c:7:10: warning: statement is indented as if it were guarded by... [-Wmisleading-indentation] emit g(); ^ /tmp/test.c:5:5: note: ...this ‘if’ clause, but it is not if (x) ^~ $ ~/gcc6/bin/gcc -E /tmp/test.c | ~/gcc6/bin/gcc -c -O3 -Wall -xc - [no error] This also happens in C++ and happens often in Qt code due to the empty "emit" macro.