https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71152
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I bet you're using ccache, just uninstall it, it is broken by design unless it starts using -fdirective-only preprocessing, more and more warnings depend on macro contexts which are lost with separate preprocessing. On this testcase we do warn with: ./xgcc -B ./ -isystem include/ pr71152.c pr71152.c: In function ‘NULL_as_int’: pr71152.c:6:10: warning: return makes integer from pointer without a cast [-Wint-conversion] return NULL; ^~~~ and don't with: ./xgcc -B ./ -isystem include/ pr71152.c -save-temps because NULL macro in that case comes from system header and we get: int NULL_as_int () { return # 6 "pr71152.c" 3 4 ((void *)0) # 6 "pr71152.c" ; } in the preprocessed source.