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

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
-ftrack-macro-expansion=0 is set in a number of tests that define helper macros
to help reduce clutter from repetitive constructs.  Without the setting,
diagnostic messages in these tests would point to the macro definition instead
of its expansion, defeating the DejaGnu directives and causing test failures. 
I suspect the option needs to stay until this is fixed and the diagnostics
point to the macro expansion as most users probably expect anyway.  Until then,
I think the surprising effect of the option on -Wmisleading-indentation could
be documented.

For example:

$ cat -n y.c && /build/gcc-71912/gcc/xgcc -B /build/gcc-71912/gcc -S -Wall
-Wextra -Wpedantic -xc++ y.c
     1  #define F(N, n) struct N { int i, a[]; } n
     2  
     3  struct S {    // { dg-message "in the definition of" }
     4    F (A, a);   // { dg-error "flexible array member" }
     5    F (B, b);   // { dg-message "next member" }
     6  };
y.c:1:37: error: flexible array member ‘S::A::a’ not at end of ‘struct S’
 #define F(N, n) struct N { int i, a[]; } n
                                     ^
y.c:4:3: note: in expansion of macro ‘F’
   F (A, a);
   ^
y.c:5:9: note: next member ‘S::B S::b’ declared here
   F (B, b);
         ^
y.c:1:42: note: in definition of macro ‘F’
 #define F(N, n) struct N { int i, a[]; } n
                                          ^
y.c:3:8: note: in the definition of ‘struct S’
 struct S {
        ^

Reply via email to