For example, given:
#define bool _Bool _Bool i; void fn() { 1; }
-ast-print produced:
tmp.c:3:13: warning: expression result unused void fn() { 1; } ^ bool i; void fn() { 1; }
That fails to compile because bool is undefined.
Details:
Diagnostics print _Bool as bool when the latter is defined as the
former. However, diagnostics were altering the printing policy for
-ast-print as well. The printed source was then invalid because the
preprocessor eats the bool definition.
Problematic diagnostics included suppressed warnings (e.g., add
-Wno-unused-value to the above example), including those that are
suppressed by default.
This patch fixes this bug and cleans up some related comments.