GCC Edition:7.3.0 I find in source code/gcc/c/c-decl.c , Line 1265 to 1281 decides what situation leads to warnings for unused variables I am confused about line 1266: I think only the DECL_READ_P is enough for program to decides the warning for unused variables, so I can elmiminate " !TREE_USED(p) || " Am I right ? The comment for "DECL_READ_P": InVAR_DECL and PARM_DECL, set when the decl has been used except for being set