https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61534
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |diagnostic Depends on| |43486 --- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- If we take gcc/testsuite/gcc.dg/pr40172-3.c (which is XFAIL) extern int xxx; #define XXX xxx int test (void) { if (!XXX && xxx) return 4; else return 0; } The big hurdle is that !XXX becomes XXX == 0, but it has the location of "!", which is not virtual. If we look at the argument of the expression, then XXX is actually a var_decl, whose location corresponds to the declaration and not the use, and it is not virtual either. This is PR43486.