/** Minimal example of gcc not printing warning coming from preprocessor generated code. It contains a line that generates tautological-compare warning. But the line is generated by a preprocessor macro and the warning is not generated, unless preprocessing and compilation are done in separate steps. When compiled as: gcc -Wall main.c the warning about tautological compare is *not shown*. But when compiled as: gcc -Wall -no-integrated-cpp main.c or as: gcc -Wall -E main.c -o main.i gcc -Wall --preprocessed main.i then this warning is printed: main.c: In function ‘main’: main.c:31:11: warning: self-comparison always evaluates to false [-Wtautological-compare] FOO ^ The issue was observed with: gcc 6.2 for ARM built by OpenEmbedded gcc 6.3 for x86_64 from Arch Linux gcc 7.0 for x86_64 built from upstram git (commit ae4f1e0ee12) */ #define FOO if (argc != argc) return 1; int main(int argc, char **argv) { FOO return 0; }