https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72797
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |manu at gcc dot gnu.org --- Comment #1 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #0) > When invoked with the -ftrack-macro-expansion=0 and > -Wmisleading-indentation, GCC warns on the following program derived from a > GCC test suite. Since the code is clearly indented and there is no mention > of the -ftrack-macro-expansion option having this effect, the warning is > unexpected. No mention where? Some diagnostics rely on macro info to produce better diagnostics. If you deactivate it, then you get bad diagnostics. Don't do that. > In addition, the documentation for -ftrack-macro-expansion=level says that > > Value '0' of level de-activates this option just as if no > -ftrack-macro-expansion was present on the command line. > > Contrary to the statement above, GCC output changes and the warning > disappears when the -ftrack-macro-expansion option is removed. Yes, this must be a relic of the time it was not the default. Personally, I think we should get rid of this option. This was useful when tracking macro expansion was new and to work-around bugs. There is no point in maintaining two code paths and much less on trying to make diagnostics better for the -ftrack-macro-expansion=0 path. That effort would be better spent in making the default more efficient and useful. If we give a warning for: do { if (i) i = 0; i++; } while (0); that is, the processed source, that would be different. But it doesn't seem to be the case in 7.0